subprocess.Popen 需要帮助
Posted
技术标签:
【中文标题】subprocess.Popen 需要帮助【英文标题】:subprocess.Popen help needed 【发布时间】:2011-10-29 18:56:42 【问题描述】:我需要使用subprocess.Popen
执行命令。
我需要运行的命令是:
./Test -t -1
Test 是一个可执行文件,而其他参数 -t
和 -1
用于启用到 shell 的输出(日志)。我想将输出写入日志文件。
很遗憾,我做不到。
我试过这样:
output = open("outputlog.log", "a")
subprocess.Popen(["./Test", "-t", "-1"], stdout = output)
请在这方面帮助我。
问候 塔莫尔
【问题讨论】:
【参考方案1】:试试这个:
output = open("outputlog.log", "a")
p = subprocess.Popen(["./Test", "-t", "-1"], stdout=subprocess.PIPE)
output.writelines(p.stdout.readlines())
【讨论】:
【参考方案2】:两件事可能会出错:
Test -t -1
可能正在写入 stderr,而不是 stdout。
output
可能需要在缓冲区被刷新或关闭之前
写入磁盘。
试试:
with open("outputlog.log", "a") as output:
subprocess.Popen(["./Test", "-t", "-1"], stdout=output, stderr=output)
这会将标准输出和标准错误写入output
,并在with
-suite 结束时关闭(并刷新)output
。
【讨论】:
以上是关于subprocess.Popen 需要帮助的主要内容,如果未能解决你的问题,请参考以下文章
从 subprocess.Popen 将参数传递给 argparse