我试图模仿使用subprocess下面的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
任何具体内容dpkg: error: need an action option
,以便在子stream程中使用它。
bash命令可以正常工作,但是语法也没有任何问题。
干杯
使用call()
的stdout
参数。 另外,你通常不希望shell=True
– 在大多数情况下,你不需要在shell中执行它,而使用一个更安全(记住ShellShock?)!
args = ['dpkg', '--get-selections'] with open('a_file.txt', 'w') as outfile: subprocess.call(args, stdout=outfile)
如果你从dpkg本身得到一个错误,这意味着你传递了错误的参数。 这与子流程无关。