pythonsubprocessdpkg:我得到的东西,在bash中运行的错误

我试图模仿使用subprocess下面的bash命令:

dpkg --get-selections > a_file.txt 

我一直在Python解释器中尝试的东西:

1只是运行dpkg

 >>> args = ['dpkg','--get-selections'] >>> subprocess.call(args, shell=True) dpkg: error: need an action option 

2将子stream程分配给一个variables

 >>> x = subprocess.call(args, shell=True) dpkg: error: need an action option 

3将subprocess输出redirect到一个文件

 >>> args = ['dpkg','--get-selections', '>', 'a_file.txt'] >>> subprocess.call(args, shell=True) dpkg: error: need an action option 

4redirect作为数组中的一个参数

 >>> args = ['dpkg','--get-selections', '> a_file.txt'] >>> subprocess.call(args, shell=True) dpkg: error: need an action option 

5而不使用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本身得到一个错误,这意味着你传递了错误的参数。 这与子流程无关。