python将控制台输出保存至文件

很多时候在Linux系统下运行python程序时,控制台会输出一些有用的信息。为了方便保存这些信息,有时需要对这些信息进行保存。这里介绍几种将控制台输出保存到文件中的方式:

1 重定向标准输出流

重定向标准输出流有两种方式,既可以在每个print方法中进行重定向,如下所示:

# assume the log file is 'a.log'
# for python2
print >> a.log, 'print something'
# for python3
print('print something', file=a.log)

同时也可以在全局上进行设置:

import sys
f = open('a.log', 'a')
sys.stdout = f
sys.stderr = f		# redirect std err, if necessary

2 使用tee命令重定向

上述方法的缺点在于重定向后,控制台就不再显示信息,可能对观察程序现象造成困难。使用tee命令则可以在保存标准输出的同时在控制台上仍然显示信息。使用范例如下:

python a_script.py 2>&1 | tee a.log

这种方法的缺点是控制台显示的内容会断断续续出现,与没有重定向时显示的方式有些不同。

3 自定义logger

我们可以在python程序中自定义一个记录者类,用来同时写文件以及在控制台进行显示。一个例子如下:

import sys
class Logger(object):
    def __init__(self, filename='default.log', stream=sys.stdout):
	    self.terminal = stream
	    self.log = open(filename, 'a')

    def write(self, message):
	    self.terminal.write(message)
	    self.log.write(message)

    def flush(self):
	    pass

sys.stdout = Logger(a.log, sys.stdout)
sys.stderr = Logger(a.log_file, sys.stderr)		# redirect std err, if necessary

# now it works
print 'print something'

此时控制台的显示也同原先一样正常。

  • 28
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
### 回答1: Python提供了输出重定向的功能,可将控制台输出保存文件中。 在Python中,使用sys库的stdout属性可以重定向输出。通过将stdout属性设置为一个文件对象,程序的所有输出都将被输出文件中。 举个例子,以下是将print语句的输出保存文件中的代码: ```python import sys # Open a file for writing with open("output.txt", "w") as f: # Redirect stdout to the file sys.stdout = f # Print something print("Hello world!") # Reset stdout to the console sys.stdout = sys.__stdout__ ``` 在这个例子中,我们打开了一个名为“output.txt”的文件以便写入,然后重定向了stdout属性以将输出写入该文件。我们打印了一个简单的“Hello world!”的消息,然后将stdout重置为控制台。 当代码运行后,输出将被写入到名为“output.txt”的文件中。 需要注意的是,如果同时使用了print和其他输出函数,例如logging或matplotlib,那么还需要重定向它们的输出。可以使用sys库的stderr属性来处理这种情况。 ```python import sys # Open a file for writing with open("output.txt", "w") as f: # Redirect stdout and stderr to the file sys.stdout = f sys.stderr = f # Print something print("Hello world!") # Reset stdout and stderr to the console sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__ ``` 在这个例子中,我们将stderr属性设置为与stdout相同的文件,以便将所有输出写入同一个文件中,并在程序结束后重置stdout和stderr。 ### 回答2: Python 是一款多用途的脚本语言,广泛用于数据分析,网络编程,机器学习等领域。其中,在数据处理方面它特别出色。在实际开发中,我们常常需要将程序运行结果保存文件中,方便我们查看和分析。本文将介绍如何将控制台输出保存文件中。 在 Python 中,我们可以使用 sys 模块来实现将控制台输出保存文件中的功能。sys 模块是 Python 的一个内置模块,可以提供对 Python 解释器进行访问和控制。 具体实现方法如下: 1. 首先,我们需要引入 sys 模块。 ```python import sys ``` 2. 接着定义一个文件对象 file,并将标准输出 sys.stdout 重定向到该文件对象中。 ```python file = open('output.txt', 'w') sys.stdout = file ``` 其中,'output.txt' 为文件名,'w' 表示以写入模式打开文件。 3. 此时,所有通过 print() 打印出来的内容都会被输出文件中。 ```python print("Hello World") print("Python is great") ``` 4. 最后,我们需要将标准输出重定向回控制台,否则后续 print() 函数的调用仍然会将结果输出文件中。 ```python sys.stdout = sys.__stdout__ # 将标准输出重定向回控制台 file.close() # 关闭文件 ``` 以上就是将控制台输出保存文件中的完整步骤。通过这种方法,我们可以将 Python 程序输出的结果保存文件中,方便我们查看和分析。 ### 回答3: 有时候我们需要在程序运行结束后查看运行过程中的控制台输出。将控制台输出保存文件是一种常见的方式。 Python提供了将控制台输出保存文件的方法,可以使用标准库中的sys模块以及文件读写模块进行实现。具体步骤如下: 1. 引入sys模块 首先要导入sys模块,因为在sys模块中有一个stdout属性,可以用于重定向标准输出。 ``` import sys ``` 2. 打开文件 接下来需要打开一个文件,用于保存控制台输出。 ``` output_file = open('output.txt', 'w') ``` 其中,'output.txt'为文件名,'w'表示以写入方式打开文件,如果文件不存在则创建,如果文件存在则覆盖原有内容。 3. 重定向标准输出 接下来需要将标准输出重定向至文件。 ``` sys.stdout = output_file ``` 4. 将控制台输出保存文件 接下来就可以运行程序,所有标准输出都会被重定向至文件。程序运行结束后,需要将sys.stdout重新指向控制台输出。 ``` #运行程序 print('Hello, World!') #将sys.stdout重新指向控制台输出 sys.stdout = sys.__stdout__ ``` 5. 关闭文件 最后要记得关闭文件。 ``` output_file.close() ``` 将控制台输出保存文件是一种非常实用的技巧,在程序调试和输出结果查看方面都具备一定的帮助作用。掌握这种方法能为你的Python开发带来很大的便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值