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 ljust rjust center输出
Sep 06 Python
python使用cookie库操保存cookie详解
Mar 03 Python
wxPython事件驱动实例详解
Sep 28 Python
python基础教程项目二之画幅好画
Apr 02 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
使用 Python 实现文件递归遍历的三种方式
Jul 18 Python
深入了解Django View(视图系统)
Jul 23 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 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
农民和部队如何穿矿
2020/03/04 星际争霸
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
sae使用smarty模板的方法
2013/12/17 PHP
php解析url的三个示例
2014/01/20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
详解用原生JavaScript实现jQuery的某些简单功能
2016/12/19 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
基于 flexible 的 Vue 组件:Toast -- 显示框效果
2017/12/26 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
Python多进程fork()函数详解
2019/02/22 Python
python数据化运营的重要意义
2019/11/25 Python
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
思想政治自我鉴定
2013/10/06 职场文书
五年级科学教学反思
2014/02/05 职场文书
党在我心中的演讲稿
2014/09/13 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android