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 相关文章推荐
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
详解常用查找数据结构及算法(Python实现)
Dec 09 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
python集成开发环境配置(pycharm)
Feb 14 Python
Java多线程实现四种方式原理详解
Jun 02 Python
Python中有几个关键字
Jun 04 Python
Python类及获取对象属性方法解析
Jun 15 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
Jul 03 Python
Python二元算术运算常用方法解析
Sep 15 Python
python实现三壶谜题的示例详解
Nov 02 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 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 Sql Server连接失败问题及解决办法
2009/08/07 PHP
php程序内部post数据的方法
2015/03/31 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
学前端,css与javascript重难点浅析
2020/06/11 Javascript
[01:36]极致酷炫!TI9典藏宝瓶+撼地者至宝展示
2019/06/11 DOTA
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
Python实现判断并移除列表指定位置元素的方法
2018/04/13 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
python requests.post带head和body的实例
2019/01/02 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
Python 如何定义匿名或内联函数
2020/08/01 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
澳大利亚领先的时尚内衣零售商:Bras N Things
2020/07/28 全球购物
Java中有几种方法可以实现一个线程?用什么关键字修饰同步方法?stop()和suspend()方法为何不推荐使用?
2015/08/04 面试题
廉洁使者实施方案
2014/03/29 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
2016年母亲节广告语
2016/01/28 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js
python中对列表的删除和添加方法详解
2022/02/24 Python
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA