将消息从python控制台重定向到txt文件

时间:2013-08-13 12:37:16

标签: python batch-file compiler-warnings

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

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

问题是警告和编译器错误未保存在此输出文件中 - 它们仅显示在Python控制台上。

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

3 个答案:

答案 0 :(得分:0)

你可以做几件事:

  1. 使用subprocess系列获取stdout和stderr文件的句柄
  2. os.system来电中使用stderr的重定向。
  3. 第一个更pythonic,并允许你的python脚本知道错误。

答案 1 :(得分:0)

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

os.system("run.bat > output.txt 2>&1")

答案 2 :(得分: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])