【发布时间】:2021-05-04 12:21:46
【问题描述】:
我正在 python 脚本中运行另一个 python 后台进程,并尝试将其标准输出通过管道传输到文件。我在跑步:
with open("log.log", "wb") as out:
p = subprocess.Popen(["python", "main.py"], stdout=out, bufsize=1)
但是,文件总是空的,而我可以在 shell 中看到 popen 进程的输出就好了。有什么想法吗?
【问题讨论】:
-
是否要将 main.py 输出保存在 log.log 文件中?
-
确实是@omides248
-
这是标准缓冲。
wait用于进程,它将关闭文件,该文件将输出刷新到磁盘。但是如果可以避免的话,可能根本不要使用Popen;正如subprocess文档中所建议的那样,尽可能选择run。然后你不需要显式地wait,因为run负责正确管理Popen对象并将其关闭。
标签: python