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正则表达式re模块详解
Jun 25 Python
python类继承用法实例分析
Oct 10 Python
python学习之编写查询ip程序
Feb 27 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
numpy返回array中元素的index方法
Jun 27 Python
解决vscode python print 输出窗口中文乱码的问题
Dec 03 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
Python字典添加,删除,查询等相关操作方法详解
Feb 07 Python
简单了解Python变量作用域正确使用方法
Jun 12 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 Python
Django restful framework生成API文档过程详解
Nov 12 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产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
eAccelerator的安装与使用详解
2013/06/13 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP Yii框架之表单验证规则大全
2015/11/16 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
可自定义速度的js图片无缝滚动示例分享
2014/01/20 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
Python查询Mysql时返回字典结构的代码
2012/06/18 Python
Python入门篇之面向对象
2014/10/20 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
在cmd中查看python的安装路径方法
2019/07/03 Python
pyCharm 设置调试输出窗口中文显示方式(字符码转换)
2020/06/09 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
英国潮流网站:END.(全球免邮)
2017/01/16 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
会计主管岗位职责
2014/01/03 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
党员个人总结自评
2015/02/14 职场文书
2016护理专业求职自荐书
2016/01/28 职场文书
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server