我希望能够使用'with'语句将Python代码的标准输出记录到文件中:
with log_to_file('log'):
# execute code
最简单的方法是手动定义log_to_file
,例如:
import sys
class log_to_file():
def __init__(self, filename):
self.f = open(filename, 'wb')
def __enter__(self):
self.stdout = sys.stdout
self.stderr = sys.stderr
sys.stdout = self.f
sys.stderr = self.f
def __exit__(self, type, value, traceback):
sys.stdout = self.stdout
sys.stderr = self.stderr
或者是否已经有一个内置类可以完成这个任务?
__exit__
中关闭文件 :) 我喜欢它。 - titoAssertPrints
上下文管理器:https://github.com/ipython/ipython/blob/master/IPython/testing/tools.py#L342 - Thomas K