Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将终端输出写入文件_Python_Os.system - Fatal编程技术网

Python 将终端输出写入文件

Python 将终端输出写入文件,python,os.system,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.t

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

要运行它,我必须键入如下内容:

pdv -t filename
我试图将其作为python程序的一部分运行。当我运行以下命令时:

os.system('pdv -t %s' % (epoch_name))
然后我得到我想要返回到终端的值(其中,epoch_name是文件名的变量名)。但当我尝试将结果写入文件时:

os.system('pdv -t %s % "(epoch_name)" > 123.txt')
文件123.txt已生成,但为空

我知道我错放了“和/或”字符,但我不知道它们应该放在哪里


如果您有任何帮助,我们将不胜感激。

查看命令
脚本是否可供您使用。它可能会满足您的需要。

查看命令
脚本是否可供您使用。它可能满足您的需要。

我相信这正是您想要的。
os.system()的参数
应该是表示操作系统命令的字符串

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

如果您计划用python进一步处理输出,则有一个模块可能值得研究。

我相信这正是您想要的。os.system()
的参数应该是表示操作系统命令的字符串

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

如果您计划用python进一步处理输出,则有一个模块可能值得研究。

最好使用os.system提供的子流程模块

import subprocess
subprocess.call(['pdv', '-t', filename, '>', dest_file_name])

最好使用os.system提供的子流程模块

import subprocess
subprocess.call(['pdv', '-t', filename, '>', dest_file_name])

可以将subprocess.call与stdout关键字参数一起使用:

import subprocess

cmd = ['ls', '-l']

with open('output.txt', 'w') as out:
    return_code = subprocess.call(cmd, stdout=out)

可以将subprocess.call与stdout关键字参数一起使用:

import subprocess

cmd = ['ls', '-l']

with open('output.txt', 'w') as out:
    return_code = subprocess.call(cmd, stdout=out)

或者,您可以使用
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()

或者,您可以使用
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()

这是一个unix/linux系统命令,设计用于捕获程序的控制台输出。我不容易访问苹果。拉起一个终端并键入
man script
,看看会出现什么。这是一个unix/linux系统命令,设计用于捕获程序的控制台输出。我不容易访问苹果。拉起一个终端并键入
m一个脚本,看看会出现什么。哦,我更喜欢它,而不是我的解决方案。
使用
rocks。+1与out=open('output.txt',w')有什么不同?@user1311069:我使用了文件对象的上下文管理器界面。例如,这里或这里的第一个示例,这是有效的,但在ipython笔记本中,终端不再输出信息。知道为什么吗?哦,我更喜欢这一点,而不是我的解决方案。
使用
rocks。+1与out=open('output.txt',w')有什么不同?@user1311069:我使用了文件对象的上下文管理器接口。例如,请参见此处或此处的第一个示例,该操作有效,但在ipython笔记本中,终端不再输出信息。知道为什么吗?