在Linux的bash shell中,我可以读取一个命令(从文件中),然后执行该命令,并将所有输出、错误和返回代码写入一个文件。我可以通过在windows中使用python来做到这一点吗。
当然可以。有很多方法可以做到这一点。
假设您有一个名为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))