2015-01-13 193 views
0

我正在编写一个Python脚本,我必须从外部软件调用一个命令。我正在使用Popen()函数来调用这样的命令。该命令也有一些选项。我想知道如何将这些选项合并到Popen()函数中。我现在使用的代码是:使用Popen()函数从外部软件调用命令()函数

from subprocess import Popen, PIPE 
proc = Popen(["halSummarizeMutations", hal_output], stdout=PIPE) 
summary_mutation = proc.communicate()[0] 

在Popen()函数中,我应该为命令的一个选项采用一个变量。修改后的代码应该如下所示:

proc = Popen(["halSummarizeMutations", --option optioninput, hal_output], stdout=PIPE) 

代码是否正确或者是否存在其他代码编写方法?提前致谢。

+0

你有没有尝试子程序打开外部程序? http://pymotw.com/2/subprocess/ – dragon2fly

+0

变量'hal_output'的内容是什么?在任何情况下,' - 选项optioninput'都需要是一个字符串。 – Kevin

+0

@Kevin hal_ouput是一个变量,这不是我遇到的问题。问题是我想接受的其他变量,optioninput的具体选项... –

回答

0

如果你想添加一些参数到外部软件,只需添加变量作为一个字符串,这里是一个“ls -la”的例子,你可以添加“-la”到列表中,你可以添加任何 其他参数列表。记住参数都是字符串。

from subprocess import Popen, PIPE 
proc = Popen(["ls", '-la'], stdout=PIPE) # if you want more, add after "-la" 
print proc.stdout.readlines() 
+0

是的,这工作得很好!谢谢!! –

+0

downvote。如果问题代码在这里使用'p.communicate()[0]',为什么还要使用'p.stdout.readlines()'? – jfs

0

提供每个参数作为一个单独的列表项:

from subprocess import check_output 

cmd = ["halSummarizeMutations", "--option", "optioninput", hal_output] 
summary_mutation = check_output(cmd) 

其中hal_output是前面定义的字符串变量。