将终端输出写入文件

时间:2012-09-06 03:31:55

标签: python os.system

在我的机器上,我有一些软件在终端中接收命令并返回值列表。

要运行它,我必须输入类似的内容:

pdv -t filename

我试图将它作为python程序的一部分运行。当我运行以下内容时:

os.system('pdv -t %s' % (epoch_name))

然后我得到了我希望返回到终端的值(其中epoch_name是文件名的变量名)。但是当我尝试将结果写入文件时:

os.system('pdv -t %s % "(epoch_name)" > 123.txt')

生成了123.txt文件,但它是空的。

我知道我错放了“和/或”字符,但我无法弄清楚应该去哪里。

感谢任何帮助!

6 个答案:

答案 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}}