gpt4 book ai didi

python - 合并 Python 脚本的子进程的 stdout 和 stderr,同时保持它们可区分

转载 作者:IT老高 更新时间:2023-10-28 21:59:35 24 4
gpt4 key购买 nike

我想将 python 脚本的子进程的标准输出和标准输入定向到同一个文件中。我不知道如何使两个来源的线条可区分? (例如,在 stderr 中的行前加上感叹号。)

在我的特殊情况下,不需要实时监控子进程,正在执行的 Python 脚本可以等待其执行结束。

最佳答案

tsk = subprocess.Popen(args,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)

subprocess.STDOUT是一个特殊标志,它告诉子进程将所有 stderr 输出路由到 stdout,从而组合您的两个流。

顺便说一句,select 在 Windows 中没有 poll()。 subprocess 只使用文件句柄号,不会调用你的文件输出对象的 write 方法。

要捕获输出,请执行以下操作:

logfile = open(logfilename, 'w')

while tsk.poll() is None:
line = tsk.stdout.readline()
logfile.write(line)

关于python - 合并 Python 脚本的子进程的 stdout 和 stderr,同时保持它们可区分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6809590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com