将命令的输出存储在变量中[重复]
Posted
技术标签:
【中文标题】将命令的输出存储在变量中[重复]【英文标题】:Storing output of command in a variable [duplicate] 【发布时间】:2015-03-10 03:44:29 【问题描述】:我正在使用 Python 脚本中的 call()
函数来执行来自外部软件的命令。我想将函数的输出存储到一个变量中并使用该变量。但是,输出值根本没有存储到变量中。
当我给出打印变量的命令时,它会打印 0 这是默认值。代码是:
from subprocess inport call
print "\n Summarizing mutations"
summary_mutation = call(["halSummarizeMutations", hal_output])
print summary_mutation
hal_output 是给命令 halSummarizeMutations 的输入文件。我得到的输出是:
GenomeName, ParentName, BranchLength, GenomeLength, ParentLength, Subtitutions, Transitions, Transversions, Matches, GapInsertions, GapInsertedBases, GapDeletions, GapDeletedBases, Insertions, InsertionBases, Deletions, DeletionBases, Inversions, InvertedBases, Duplications, DuplicatedBases, Transpositions, TranspositionBases, Other
ancestral_sequences, homo_sapiens, 1, 225206, 248956422, 149218, 49494, 99724, 49433, 10, 698, 0, 0, 17, 20539, 10, 4345, 1343, 134907, 672, 57699, 0, 0, 0
gorilla_gorilla, homo_sapiens, 1, 229507203, 248956422, 44226, 13434, 26644, 15224, 68, 593, 120, 6319, 15, 229443572, 6, 857, 0, 0, 0, 0, 0, 0, 10
papio_anubis, homo_sapiens, 1, 220367699, 248956422, 98187, 32113, 64759, 32284, 6, 1418, 11, 245, 36, 220231921, 30, 7448, 791, 109496, 0, 0, 0, 0, 0
Total, ,3, 450100108, 746869266, 291631, 95041, 191127, 96941, 84, 2709, 131, 6564, 68, 449696032, 46, 12650, 2134, 244403, 672, 57699, 0, 0, 0
Average, ,1, 150033369, 248956422, 97210, 31680, 63709, 32313, 28, 903, 43, 2188, 22, 149898677, 15, 4216, 711, 81467, 224, 19233, 0, 0, 0
0
其中 0 是 summary_mutation 变量的值。请帮帮我。提前致谢。
【问题讨论】:
call
方法是来自subprocess
模块的方法吗(即from subprocess import call
是否出现在您的代码中)?签名看起来像,但我想确认一下。
是的,它来自子进程模块,我已经完成了导入命令,但没有在这里显示。对不起!
【参考方案1】:
假设您正在使用subprocess
模块,如果您想与输出交互,最好使用Popen
对象。
from subprocess import Popen, PIPE
proc = Popen(["halSummarizeMutations", hal_output], stdout=PIPE)
summary_mutation = proc.communicate()[0]
现在summary_mutation
应该是子进程的标准输出流内容的字符串表示形式。
【讨论】:
@VarshithChakrapani 如果有帮助我很高兴。如果您还没有看过它,Python 2.xsubprocess
模块的文档在此链接 (docs.python.org/2/library/subprocess.html) 上。
@VarshithChakrapani:你也可以使用summary_mutation = subprocess.check_output(["halSummarizeMutations", hal_output])
以上是关于将命令的输出存储在变量中[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将os.system()输出存储在python中的变量或列表中[重复]
使用管道将 Windows 命令解析为批处理文件中的变量 [重复]