【发布时间】:2026-02-10 07:45:02
【问题描述】:
我有两个文件:
main.py
import subprocess
import shlex
def main():
command = 'python test_output.py'
logfile = open('output', 'w')
proc = subprocess.Popen(shlex.split(command), stdout=logfile)
if __name__ == "__main__":
main()
和test_output.py
from time import sleep
import os
for i in range(0, 30):
print("Slept for => ", i+1, "s")
sleep(1)
os.system("notify-send completed -t 1500")
一旦子进程完成,进程的输出就会写入logfile。有什么办法:
- 从 main 启动子进程并退出它(就像现在一样)。
- 继续在后台运行子进程。
- 当子进程产生输出时,立即将其写入
logfile。 (不要像现在这样等待子进程完成。)
还有其他问题 (like this one) 给出了逐行阅读的解决方案,但它们使main.py 等待。是否可以在后台执行所有操作,而无需让 main.py 等待?
【问题讨论】:
标签: python file subprocess pipe