0

我有一个 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 文件的路径。有人有什么建议吗?

4

2 回答 2

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)
于 2013-09-03T21:06:56.167 回答
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)
于 2013-09-04T04:52:40.923 回答