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生成指定尺寸缩略图的示例
May 07 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
KMP算法精解及其Python版的代码示例
Jun 01 Python
python中requests库session对象的妙用详解
Oct 30 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
python输出决策树图形的例子
Aug 09 Python
在python Numpy中求向量和矩阵的范数实例
Aug 26 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 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读取html并截取字符串的简单代码
2009/11/30 PHP
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
js登录弹出层特效
2014/03/07 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
老生常谈javascript变量的命名规范和注释
2016/09/29 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
深入学习python的yield和generator
2016/03/10 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
波比布朗英国官网:Bobbi Brown英国
2017/11/13 全球购物
六道php面试题附答案
2014/06/05 面试题
体育教育专业毕业生自荐信
2013/11/15 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
超市采购员岗位职责
2015/04/07 职场文书
银行催款通知书
2015/04/17 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android