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中的多重继承实例讲解
Sep 28 Python
Python两个整数相除得到浮点数值的方法
Mar 18 Python
详解Python中的各种函数的使用
May 24 Python
python追加元素到列表的方法
Jul 28 Python
python字符串连接方法分析
Apr 12 Python
Python 的类、继承和多态详解
Jul 16 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
python得到电脑的开机时间方法
Oct 15 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
python线程池如何使用
May 28 Python
Python偏函数Partial function使用方法实例详解
Jun 17 Python
OpenCV读取与写入图片的实现
Oct 13 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
PHP5/ZendEngine2的改进
2006/10/09 PHP
php操作XML、读取数据和写入数据的实现代码
2014/08/15 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
Yii分页用法实例详解
2014/12/04 PHP
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
vue中slot(插槽)的介绍与使用
2018/11/12 Javascript
vue实现的组件兄弟间通信功能示例
2018/12/04 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
python django集成cas验证系统
2014/07/14 Python
详解Python中find()方法的使用
2015/05/18 Python
Python变量作用范围实例分析
2015/07/07 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
Python3标准库总结
2019/02/19 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
汇集了世界上最好的天然和有机美容产品:LoveLula
2018/02/05 全球购物
C++面试题目
2013/06/25 面试题
全国税务系统先进集体事迹材料
2014/05/19 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
python使用torch随机初始化参数
2022/03/22 Python
python运算符之与用户交互
2022/04/13 Python