python将控制台输出保存至文件的方法

 更新时间:2019年01月07日 15:56:37   作者:KFXW  
今天小编就为大家分享一篇python将控制台输出保存至文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

很多时候在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中pandas的series合并方法

    在python中pandas的series合并方法

    今天小编就为大家分享一篇在python中pandas的series合并方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python3音乐播放器简单实现代码

    python3音乐播放器简单实现代码

    这篇文章主要为大家详细介绍了python3音乐播放器简单实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Django项目中动态设置静态文件路径的全过程

    Django项目中动态设置静态文件路径的全过程

    这篇文章主要给大家介绍了关于Django项目中动态设置静态文件路径的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • python解包概念及实例

    python解包概念及实例

    在本篇文章里小编给大家分享的是一篇关于python解包知识点总结,对此有兴趣的朋友们可以学习参考下。
    2021-02-02
  • Python如何设置utf-8为默认编码的问题

    Python如何设置utf-8为默认编码的问题

    这篇文章主要介绍了Python如何设置utf-8为默认编码的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python基于SMTP发送邮件的方法

    Python基于SMTP发送邮件的方法

    这篇文章主要介绍了Python基于SMTP 发送邮件的方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • 在python3中使用Supervisor的详细教程

    在python3中使用Supervisor的详细教程

    Supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统,本文给大家介绍在python3中使用Supervisor的方法,感兴趣的朋友一起看看吧
    2022-01-01
  • DataFrame.to_excel多次写入不同Sheet的实例

    DataFrame.to_excel多次写入不同Sheet的实例

    今天小编就为大家分享一篇DataFrame.to_excel多次写入不同Sheet的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python skimage 连通性区域检测方法

    python skimage 连通性区域检测方法

    今天小编就为大家分享一篇python skimage 连通性区域检测方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Flask实现异步执行任务

    Flask实现异步执行任务

    在一些开发中,可能会遇到需要长时间处理的任务,此时就需要使用异步的方式来实现,本文就介绍了Flask实现异步执行任务的方法,感兴趣的可以了解一下
    2021-05-05

最新评论