我试图使用Python执行shell命令时完成两件事情:
所以,阅读了这个问题后,我意识到我可能需要尝试不同的方法。
这种方法的问题在于,根据文档Popen.communicate():
有没有推荐的方法来实现这个?
- 捕获stdout并在发生时打印
- 在命令完成时捕获整个stdout并处理它
subprocess.check_output
,但它没有一个stdout参数可以让我实时打印输出。所以,阅读了这个问题后,我意识到我可能需要尝试不同的方法。
from subprocess import Popen, PIPE
process = Popen(task_cmd, stdout = PIPE)
stdout, stderr = process.communicate()
print(stdout, stderr)
这种方法的问题在于,根据文档Popen.communicate():
读取stdout和stderr中的数据,直到达到文件结尾。 等待进程终止
我仍然无法将输出重定向到stdout和某种可以在完成命令时进行解析的缓冲区。
理想情况下,我希望有这样的东西:
# captures the process output and dumps it to stdout in realtime
stdout_capture = Something(prints_to_stdout = True)
process = Popen(task_cmd, stdout = stdout_capture)
# prints the entire output of the executed process
print(stdout_capture.complete_capture)
有没有推荐的方法来实现这个?