
python把print的内容写入txt
我希望把Python程序中使用print打印的内容直接保存到txt文件中,应该怎么操作?
使用文件重定向功能捕获print输出
可以通过重定向标准输出流将print的内容写入文件。具体做法是使用Python的内置sys模块,将sys.stdout指向一个打开的文件对象。例如:
import sys
with open('output.txt', 'w') as f:
sys.stdout = f
print('要写入文件的内容')
sys.stdout = sys.stdout # 恢复标准输出
这样print输出的内容会写入到output.txt文件中。
假设我已经有很多print语句,我想不用修改这些print语句,直接把内容保存到txt文件,有方法实现吗?
利用上下文管理器重定向标准输出
可以通过sys.stdout的重定向临时将所有print的内容转到文件中,无需修改原有print语句。示例代码如下:
import sys
with open('output.txt', 'w') as f:
original_stdout = sys.stdout # 备份标准输出
sys.stdout = f
# 这里所有print都会写入output.txt
print('保存的内容')
sys.stdout = original_stdout # 还原标准输出
这样即可在某段代码期间把print信息写入txt文件。
我希望print输出既能显示在控制台,也能写入到文本文件,应该怎么实现?
自定义输出类实现双向打印
可以自定义一个类,用来同时将内容输出到控制台和写入文件。示例代码示范了如何实现这个功能:
class Tee:
def init(self, filename):
self.file = open(filename, 'w')
self.stdout = sys.stdout
def write(self, data):
self.file.write(data)
self.stdout.write(data)
def flush(self):
self.file.flush()
self.stdout.flush()
import sys
sys.stdout = Tee('output.txt')
print('这条消息会同时显示和保存')
完成后可恢复sys.stdout为默认
sys.stdout = sys.stdout.stdout
这样print的信息就会同步输出到文件和终端。