我正在尝试使用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)
但输出文件仍为空。如何做到这一点(不阻止!)?
另外:
我的猜测是创建了输出文件,但是一旦上面的代码完成就会关闭。因此,没有输出到该文件......
答案 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)