我不知道是否有一种简便的方法,它不依赖于手动写下脚本保存的输出对任何建议都开放。我想要一个在脚本末尾运行的函数,该函数自动生成一个名称如下的文本文件:“ IO_track_scriptname_date_time”其中包含我加载的文件和我保存的文件的列表(位置链接)。然后将该txt文件保存到所需的目标位置。
谢谢您的帮助
编辑:或任何其他保持输入和输出日志的方式。
这里是open
函数周围的一个薄对象包装器,该包装器跟踪所有打开的文件。
class Open:
_open = open
def __init__(self):
self.opened_files = []
self.fp = None
def __call__(self,
file,
mode='r',
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None):
self.fp = self._open(file, mode, buffering, encoding, errors,
newline, closefd, opener)
self.opened_files.append((mode, file))
return self.fp
def __enter__(self, *args, **kwargs):
return self.__call__(*args, **kwargs)
def __exit__(self, *exc_details):
return self.fp.close()
def __getattr__(self, attr):
return getattr(self.fp, attr)
def export(self, filename):
with open(filename, 'w') as fp:
for m, fn in self.opened_files:
fp.write(f'({m}): {fn}\n')
要实际使用它,您将需要用此类的实例覆盖内置的open
函数。如果有一个要调用的文件,则可以将其弹出到__main__
块中。即
...
if __name__=='__main__':
# code defining Open class here
...
open = Open()
# other code in __main__ here
open.export("IO_track_scriptname_date_time.txt")