如何在Python代码内实现输出内容追加到文件?
在Python代码内部实现打印输出追加到文件
这里提供几种实用的方法,替代终端python3 test.py >> file.txt的追加效果:
方法1:全局重定向标准输出
这种方法不需要修改原有print语句,直接把所有控制台输出重定向到文件,同时能随时恢复原输出流:
import sys import http.client # 保存原始标准输出,用于后续恢复 original_stdout = sys.stdout try: # 以追加模式('a')打开目标文件 with open('file.txt', 'a') as output_file: sys.stdout = output_file # 原有http请求与打印逻辑保持不变 conn = http.client.HTTPConnection("example.com") conn.request("GET", "/") response = conn.getresponse() print(response.read().decode()) finally: # 恢复标准输出,保证后续print能正常输出到控制台 sys.stdout = original_stdout
方法2:给print函数指定file参数
如果只想把特定的打印内容追加到文件,直接在print里指定file参数即可,灵活度更高:
import http.client # 以追加模式打开文件,with语句会自动关闭文件 with open('file.txt', 'a') as output_file: conn = http.client.HTTPConnection("example.com") conn.request("GET", "/") response = conn.getresponse() data = response.read().decode() # 仅将内容追加到文件 print(data, file=output_file) # 如果需要同时输出到控制台,再单独调用一次print # print(data)
方法3:自定义兼顾控制台与文件的打印函数
如果需要同时把内容输出到控制台和文件,可以封装一个自定义函数:
import http.client def print_and_append(content, file_path='file.txt'): # 输出到控制台 print(content) # 追加到目标文件 with open(file_path, 'a') as f: print(content, file=f) # 使用自定义函数处理请求结果 conn = http.client.HTTPConnection("example.com") conn.request("GET", "/") response = conn.getresponse() data = response.read().decode() print_and_append(data)
内容的提问来源于stack exchange,提问作者hachemon
相关产品推荐
相关产品推荐

