捕获所有输出和错误,通过python警告Windows中的命令

时间:2016-07-18 03:51:30

标签: python windows shell

在Linux的bash shell中,我可以读取命令(来自文件),然后执行命令并将所有输出,错误和返回代码写入文件。我可以通过在Windows中使用python来实现这一点。

1 个答案:

答案 0 :(得分:0)

当然可以。有很多方法可以做到这一点。

假设您有一个名为commands的文本文件,其中包含每行的命令。你可以这样做:

  • 打开输入文件
  • 从文件
  • 中读取下一个命令名称
  • 使用subprocess
  • 执行命令
  • 将stderr重定向到stdout
  • 捕获合并输出
  • 如果命令成功,则将返回代码设置为0,否则从抛出的异常中捕获返回代码。
  • 将返回代码和输出写入文件

您将要使用: https://docs.python.org/2/library/subprocess.html 要么 https://docs.python.org/3/library/subprocess.html

例如:

import shlex
import subprocess

with open('commands.txt') as fin:
    for command in fin:
        try:
            proc = subprocess.Popen(
                shlex.split(command),
                stderr=subprocess.STDOUT,
                stdout=subprocess.PIPE
            )
            returncode = 0
            output = proc.communicate()[0]
        except subprocess.CalledProcessError as e:
            returncode = e.returncode
            output = e.output
        with open('output.txt', 'w') as fout:
            fout.write('{}, {}'.format(returncode, output))