说明
以下这个类print_and_save可以修饰你的函数,让你的函数或命令的输出结果在控制台输出的同时,还能存储为你指定的文件
免去你是用写日志函数的必要
优点:
- 完全不需要修改代码对函数或语句直接装饰就行
import sys
class print_and_save( ):
def __init__(self, filepath):
self.file = open(filepath, \'a\')
self.old = sys.stdout # 将当前系统输出储存到临时变量
sys.stdout = self
def __enter__(self):
pass
def __call__(self,func):
def wrapper(*args, **kwargs):
frs = func(*args, **kwargs)
self._exit()
return frs
return wrapper
def write(self, message):
self.old.write(message)
self.file.write(message)
def __exit__(self, exc_type, exc_val, exc_tb):
self._exit()
def _exit(self):
self.file.flush()
self.file.close()
sys.stdout = self.old
直接修饰语句
with print_and_save(\"a.txt\"):
print(\"directed print\")
修饰函数中的控制台输出
def contextout(text):
print(\"context function print is %s\" % text)
with print_and_save(\"a.txt\"):
contextout(\"ok\")
以装饰器的方式修饰输出
@print_and_save(\"a.txt\")
def decorated_out():
print(\"decorator print\")
decorated_out()
结果
# 控制台
directed print
context function print is ok
decorator print
# 文件a.txt内容
directed print
context function print is ok
decorator print
此内容为个人原创,转载请注明出处:https://www.cnblogs.com/JohnRain/p/10089419.html
继续阅读与本文标签相同的文章
上一篇 :
弹性计算双周刊 第3期
下一篇 :
数据中心运营策略应该随着气候变化而改变
-
阿里云第六代云服务器实例类型、特性及可选区域介绍
2026-05-19栏目: 教程
-
Greenplum6单机安装攻略
2026-05-19栏目: 教程
-
.git文件夹探秘,理解git运作机制
2026-05-19栏目: 教程
-
阿里云RPA(机器人流程自动化)精品系列之一:跨网机器人解决方案
2026-05-19栏目: 教程
-
《21天学通C语言(第5版)》| 每日读本书
2026-05-19栏目: 教程
