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 06 Python
Python同时向控制台和文件输出日志logging的方法
May 26 Python
python通过elixir包操作mysql数据库实例代码
Jan 31 Python
TensorFlow实现创建分类器
Feb 06 Python
python reverse反转部分数组的实例
Dec 13 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
Mar 03 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
python with语句的原理与用法详解
Mar 30 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
Django显示可视化图表的实践
May 10 Python
详解Python flask的前后端交互
Mar 31 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 google或baidu分页代码
2009/11/26 PHP
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
PHP类的封装与继承详解
2015/09/29 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
浅谈Javascript 执行顺序
2013/12/18 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
VueJS事件处理器v-on的使用方法
2017/09/27 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
Vue $emit()不能触发父组件方法的原因及解决
2020/07/28 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
python使用递归解决全排列数字示例
2014/02/11 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
django的settings中设置中文支持的实现
2019/04/28 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
自考毕业自我鉴定
2014/03/18 职场文书
售房协议书范本2014
2014/10/23 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏