Python实现同时输出到控制台与文件的三种方法

Dylan
Dylan
发布时间:2026-10-13 | 1人浏览过
原创

本文介绍在Python编程中,如何将print输出同时显示在控制台并保存至文件。通过logging模块、多次调用print以及重定向sys.stdout三种方式实现,并附带R语言sink函数的对比说明,帮助开发者灵活选择适合的技术方案。

在Python开发过程中,经常需要使用print函数输出调试信息或运行结果。若希望这些输出既能实时显示在集成开发环境(IDE)的控制台屏幕上,又能持久化保存到文件(例如txt格式)中,应采取何种处理方式?

方法一

利用Python内置的logging模块,可以将信息输出至文件或控制台。该方法适用于需要同时记录debug、error等多级别日志的场景。官方教程建议采用规范化的logger配置,通过设置日志级别(level)和输出端点来实现精确控制。

具体实现可参考官方文档提供的示例代码。

import logging
logging.basicConfig(filename='log_examp.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

方法二

通过多次调用print函数分别处理输出目标。

例如,若需同时获取程序的绝对路径及文件名,可分别向控制台和文件写入这些信息。

import os
# 第一句输出到consle:
print("filepath:",__file__,"\nfilename:",os.path.basename(__file__))
# 第二句输出到txt:
with open("outputlog.txt","a+") as f:
 print("filepath:",__file__,
 "\nfilename:",os.path.basename(__file__))
 #当然 也可以用f.write("info")的方式写入文件

方法三

利用输出重定向机制,将标准输出流指向文件,实现一次性输出至文件,同时保留控制台交互。

此方法同样用于输出程序路径和文件名信息。

import os
import sys
temp=sys.stdout # 记录当前输出指向,默认是consle
with open("outputlog.txt","a+") as f:
 sys.stdout=f # 输出指向txt文件
 print("filepath:",__file__,
 "\nfilename:",os.path.basename(__file__))
 print("some other information")
 print("some other")
 print("information")
 sys.stdout=temp # 输出重定向回consle
 print(f.readlines()) # 将记录在文件中的结果输出到屏幕

R语言的重定向机制

补充说明:在Windows环境下的R语言中,可使用sink('文件名.后缀名')函数将输出重定向至文件,随后通过调用sink()恢复至控制台输出,操作便捷。

以上关于Python信息同时输出至控制台与文件的实例讲解完毕,供读者参考。如有更多疑问,欢迎支持本站获取更多技术内容。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表