print
編集されたものは何でもテキストファイルに記録したいsys.stdout
。より賢い人々がよりエレガントでPythonicなソリューションを思い付くことができることを私は理解していますが、ここに私のソリューションがあります
class logger:
def __init__(self, filename='log.txt'):
self.logf = open(filename, 'a')
global print
self.__print = print
print = self.lognprint
def __del__(self):
self.logf.close()
def lognprint(self, *args, **keywords):
self.__print(*args, file = self.logf, **keywords)
self.__print(*args, **keywords)
今、私のコードのどこかに追加します
mylog = logger()
print
後で編集されたものもすべてログに記録されます。
しかし、多くの明らかな理由から、これは安全/適切ではありません。たとえば、複数のlogger
オブジェクトが厄介になる可能性があります。
さらに、私は触発されています
from __future__ import print_function
(たとえばこれを参照してください)そして私は似たようなことをしたいので、import
私のモジュールのとき、組み込みprint
はコードのどこかで私のバージョンのprintによって上書きされます。
そんなことがあるものか?