我有一个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文件的路径。有人有什么建议吗?
答案 0 :(得分:1)
你为什么打电话给list2cmdline
?这实际上并不会调用子进程。
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)