如何将Python脚本中调用的批处理文件的结果写入文件

时间:2013-09-03 21:02:48

标签: python batch-file subprocess

我有一个Python脚本,其中有一个.bat文件目录。我遍历它们并通过命令行运行每个,然后将批处理脚本的结果保存到文件中。到目前为止,我有这个:

import subprocess

for _, _, files in os.walk(directory):
    for f in files:
        fullpath = directory + os.path.basename(f)
        params = [fullpath]
        result = subprocess.list2cmdline(params)

但是,当我需要在的bat文件中运行代码的结果时,这会将result变量设置为.bat文件的路径。有人有什么建议吗?

2 个答案:

答案 0 :(得分:1)

你为什么打电话给list2cmdline?这实际上并不会调用子进程。

改为使用subprocess.check_output

import os

output = []

for _, _, files in os.walk(directory):
    for f in files:
        fullpath = os.path.join(directory, os.path.basename(f))
        output.append(subprocess.check_output([fullpath]))

print '\n'.join(output)

答案 1 :(得分:0)

要将命令的结果(输出)写入文件,可以使用stdout参数:

import os
from glob import glob
from subprocess import check_call

for path in glob(os.path.join(directory, "*.bat")):
    name, _ = os.path.splitext(path)
    with open(name + ".result", "wb") as outfile:
        check_call(path, stdout=outfile)