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


Posted in Python onJanuary 07, 2019

很多时候在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'

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

以上这篇python将控制台输出保存至文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 Python
python实现在windows服务中新建进程的方法
Jun 30 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
在Python中增加和插入元素的示例
Nov 01 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
Mar 13 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
Mar 27 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
Dec 19 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
Keras之fit_generator与train_on_batch用法
Jun 17 Python
GitHub上值得推荐的8个python 项目
Oct 30 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
对Python捕获控制台输出流的方法详解
Jan 07 #Python
python print输出延时,让其立刻输出的方法
Jan 07 #Python
Python3 单行多行万能正则匹配方法
Jan 07 #Python
Python字符串的全排列算法实例详解
Jan 07 #Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 #Python
Python进阶之自定义对象实现切片功能
Jan 07 #Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 #Python
You might like
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
smarty高级特性之过滤器的使用方法
2015/12/25 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
用于table内容排序
2006/07/21 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
2016/04/26 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python实现的个人所得税计算器示例
2018/06/01 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
在Python中增加和插入元素的示例
2018/11/01 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
锐步英国官网:Reebok英国
2019/11/29 全球购物
学校安全工作制度
2014/01/19 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
退休教师欢送会主持词
2014/03/31 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
个人安全生产责任书
2014/07/28 职场文书