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正则表达式介绍
Aug 06 Python
深入解析Python中的上下文管理器
Jun 28 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
python使用锁访问共享变量实例解析
Feb 08 Python
Python数据结构之哈夫曼树定义与使用方法示例
Apr 22 Python
在dataframe两列日期相减并且得到具体的月数实例
Jul 03 Python
python pandas消除空值和空格以及 Nan数据替换方法
Oct 30 Python
将python运行结果保存至本地文件中的示例讲解
Jul 11 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 Python
python属于解释型语言么
Jun 15 Python
Python OpenCV之常用滤波器使用详解
Apr 07 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
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
常见的PHP五种设计模式小结
2011/03/23 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
vue 实现小程序或商品秒杀倒计时
2019/04/14 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
在Python下尝试多线程编程
2015/04/28 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
Numpy array数据的增、删、改、查实例
2018/06/04 Python
python调用java的jar包方法
2018/12/15 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
python如何实现代码检查
2019/06/28 Python
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
java程序员面试交流
2012/11/29 面试题
房地产员工找工作的自我评价
2013/11/15 职场文书
亲子拓展活动方案
2014/02/20 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
汇源肾宝广告词
2014/03/20 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书