0

我正在使用 Python 脚本来调用在生成工具和编译器之后调用的批处理文件。我使用以下方法将其保存到输出文件中:

os.system("run.bat >output.txt")

问题是警告和编译器错误没有保存在这个输出文件中——它们只显示在 Python 控制台上。

我将如何将输出保存到文件中?

4

3 回答 3

0

你可以做几件事:

  1. 使用subprocess族来获取 stdout 和 stderr 文件的句柄
  2. os.system在您的通话中使用 stderr 的重定向。

第一个更pythonic,并允许您的python脚本意识到错误。

于 2013-08-13T12:45:31.297 回答
0

不要使用 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])
于 2013-08-13T13:21:50.977 回答
0

将 stderr 重定向到同一文件的简单方法如下:

os.system("run.bat > output.txt 2>&1")
于 2013-08-13T12:48:00.807 回答