我认为这应该有效。我想得到这个命令的输出 每个标签的“grep -l%s * .py”%标签, 在带有标记名称的已创建文件上。
import os
import sys
results_dir = '/home/ks/one/work/tn/format-description 15852/results'
converters_dir = '/home/ks/one/work/cvr'
export_dir = '/home/ks/one/work/epr'
all_dirs = {'cvr':cvrs_dir,
'epr':eprs_dir}
tags = [tag.strip() for tag in open('new file').readlines()]
for coe, directory in all_dirs.items(): # coe - type of our file
os.chdir(results_dir)
for tag in tags:
tag_file = open(coe + ' ' + tag, 'w')
sys.stdout = tag_file
os.chdir(directory)
os.system("grep -l %s *.py" % tag)
tag_file.close()
但是我在运行脚本时看到的所有内容 - 它都是在我的控制台中输出的。
答案 0 :(得分:2)
使用Python的子进程模块
http://docs.python.org/library/subprocess.html
该文档包含大量文档和示例。
os.system()的另一个(差)选项是将输出重定向到文件
os.system('do_something >/tmp/myoutput')
然后再从Python中读取输出文件。然而这很难看 并且可能不太便携。
答案 1 :(得分:0)
我能想到的最小变化让你可以在python中获得输出是改变:
os.system("grep -l %s *.py" % tag)
有:
output = commands.getoutput("grep -l %s *.py" % tag)
这样,命令的输出将以输出变量结束。
我不确定为什么其他人会教条地告诉您更改代码以使用子进程;这将需要更多的重写。