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 需要啥权限?

使用 subprocess.Popen 隐藏控制台

从 subprocess.Popen 将参数传递给 argparse

管道输出subprocess.Popen到文件

如何从 subprocess.Popen 使用 STDIN [重复]

Python subprocess.Popen PIPE和SIGPIPE