我正在尝试使用子进程模拟以下bash命令:
dpkg --get-selections > a_file.txt
我一直在尝试使用Python解释器:
>>> args = ['dpkg','--get-selections']
>>> subprocess.call(args, shell=True)
dpkg: error: need an action option
>>> x = subprocess.call(args, shell=True)
dpkg: error: need an action option
>>> args = ['dpkg','--get-selections', '>', 'a_file.txt']
>>> subprocess.call(args, shell=True)
dpkg: error: need an action option
>>> args = ['dpkg','--get-selections', '> a_file.txt']
>>> subprocess.call(args, shell=True)
dpkg: error: need an action option
shell=True
>>> x = subprocess.call(args)
dpkg: no packages found matching > a_file.txt
>>>
关于在子进程中使用它,dpkg: error: need an action option
似乎无法得到任何具体内容。
bash命令运行正常,但语法似乎也没有任何问题。
欢呼声
答案 0 :(得分:2)
使用stdout
的{{1}}参数。此外,您通常不希望call()
- 在大多数情况下,您不需要在shell中执行它而不使用它会更安全(还记得ShellShock吗?)!
shell=True
如果您从 dpkg 本身收到错误,则表示您传递的错误参数。这与子流程无关。