如何在某个文件中使用带有输出的子进程启动命令,取消阻止?

时间:2016-06-14 18:25:43

标签: python

我正在尝试使用subprocess在命令行上启动命令,我希望将输出写入某个文件。所以,换句话说,我想拥有,例如,在python中执行以下命令:

python my_code.py --arg1 > output.txt

我尝试了以下内容:

import subprocess
cwd = "/home/path/to/the/executable"
cmd = "python my_code.py --arg1"
with open('output.txt', "w") as outfile:
    subprocess.Popen(cmd.split(), stdout=outfile, cwd = cwd)

但输出文件仍为空。如何做到这一点(不阻止!)?

另外:

我的猜测是创建了输出文件,但是一旦上面的代码完成就会关闭。因此,没有输出到该文件......

1 个答案:

答案 0 :(得分:2)

默认情况下,

sys.stdout是缓冲的。您可以将-u传递给python来停用它。

import subprocess
cwd = "/home/path/to/the/executable"
cmd = "python -u my_code.py --arg1"
with open('output.txt', "w") as outfile:
    subprocess.Popen(cmd.split(), stdout=outfile, cwd = cwd)