首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python子进程dpkg :我收到了在bash中运行的错误

python子进程dpkg :我收到了在bash中运行的错误
EN

Stack Overflow用户
提问于 2014-12-25 00:29:15
回答 1查看 587关注 0票数 2

我试图使用子进程来模拟以下bash命令:

代码语言:javascript
复制
dpkg --get-selections > a_file.txt

我在Python解释器中尝试了一些东西:

1只跑dpkg

代码语言:javascript
复制
>>> args = ['dpkg','--get-selections']
>>> subprocess.call(args, shell=True)
dpkg: error: need an action option

2将子进程分配给变量

代码语言:javascript
复制
>>> x = subprocess.call(args, shell=True)
dpkg: error: need an action option

3将子进程输出重定向到文件

代码语言:javascript
复制
>>> args = ['dpkg','--get-selections', '>', 'a_file.txt']
>>> subprocess.call(args, shell=True)
dpkg: error: need an action option

4重定向,作为数组中的一个参数。

代码语言:javascript
复制
>>> args = ['dpkg','--get-selections', '> a_file.txt']
>>> subprocess.call(args, shell=True)
dpkg: error: need an action option

5不使用shell=True

代码语言:javascript
复制
>>> x = subprocess.call(args)
dpkg: no packages found matching > a_file.txt
>>> 

对于在子进程中使用dpkg: error: need an action option,我似乎无法得到任何具体的信息。

bash命令工作正常,但语法似乎也没有什么问题。

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-25 00:34:12

使用stdout参数call()。而且,您通常不想要shell=True --在大多数情况下,您不需要在shell中执行它,而不使用它要安全得多(还记得ShellShock吗?)

代码语言:javascript
复制
args = ['dpkg', '--get-selections']
with open('a_file.txt', 'w') as outfile:
    subprocess.call(args, stdout=outfile)

如果从dpkg本身得到一个错误,就意味着您传递了错误的参数。这与子进程无关。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27643326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档