我正在使用 Python 脚本来调用在生成工具和编译器之后调用的批处理文件。我使用以下方法将其保存到输出文件中:
os.system("run.bat >output.txt")
问题是警告和编译器错误没有保存在这个输出文件中——它们只显示在 Python 控制台上。
我将如何将输出保存到文件中?
我正在使用 Python 脚本来调用在生成工具和编译器之后调用的批处理文件。我使用以下方法将其保存到输出文件中:
os.system("run.bat >output.txt")
问题是警告和编译器错误没有保存在这个输出文件中——它们只显示在 Python 控制台上。
我将如何将输出保存到文件中?
你可以做几件事:
subprocess
族来获取 stdout 和 stderr 文件的句柄os.system
在您的通话中使用 stderr 的重定向。第一个更pythonic,并允许您的python脚本意识到错误。
不要使用 os.system ~ 你在那里没有错误处理,或者更糟糕的是,如果发生错误,你没有指示符。
我会这样解决这个问题:
from subprocess import Popen, PIPE
proc = Popen(['run.bat'], stdout=PIPE, stderr=PIPE)
result = proc.communicate()
with open('output.txt', 'w') as output:
output.write(result[0])
with open('errors.txt', 'w') as errors:
errors.write(result[-1])
将 stderr 重定向到同一文件的简单方法如下:
os.system("run.bat > output.txt 2>&1")