在我的机器上,我有一些软件在终端中接收命令并返回值列表。
要运行它,我必须输入类似的内容:
pdv -t filename
我试图将它作为python程序的一部分运行。当我运行以下内容时:
os.system('pdv -t %s' % (epoch_name))
然后我得到了我希望返回到终端的值(其中epoch_name是文件名的变量名)。但是当我尝试将结果写入文件时:
os.system('pdv -t %s % "(epoch_name)" > 123.txt')
生成了123.txt文件,但它是空的。
我知道我错放了“和/或”字符,但我无法弄清楚应该去哪里。
感谢任何帮助!
答案 0 :(得分:7)
您可以使用subprocess.call和stdout关键字参数:
import subprocess
cmd = ['ls', '-l']
with open('output.txt', 'w') as out:
return_code = subprocess.call(cmd, stdout=out)
答案 1 :(得分:3)
我相信这可以做你想要的。 os.system()
的参数应该是表示操作系统命令的字符串。
os.system('pdv -t %s > 123.txt' % epoch_name)
有subprocess
模块,如果你打算在python中进一步处理输出,可能值得一看。
答案 2 :(得分:3)
最好使用os.system
的子进程模块import subprocess
subprocess.call(['pdv', '-t', filename, '>', dest_file_name])
答案 3 :(得分:2)
from subprocess import Popen
proc = Popen(['pdv', '-t', epoch_name], stdout = open('123.txt', 'w'))
答案 4 :(得分:1)
查看命令script
是否可用。它可能会做你需要的。
答案 5 :(得分:0)
或者您可以sys.stdout
使用import sys
print 'Dive in'
saveout = sys.stdout
fsock = open('out.log', 'w')
sys.stdout = fsock
print 'This message will be logged instead of displayed'
sys.stdout = saveout
fsock.close()
检查此文档,或者如果它可以帮助您,请查看DiveIntoPython。
{{1}}