以下代码将输出输出到控制台以及log.txt
文件。
代码
import sys
class multifile(object):
def __init__(self, files):
self._files = files
def __getattr__(self, attr, *args):
return self._wrap(attr, *args)
def _wrap(self, attr, *args):
def g(*a, **kw):
for f in self._files:
res = getattr(f, attr, *args)(*a, **kw)
return res
return g
sys.stdout = multifile([ sys.stdout, open('log.txt', 'w') ])
name = input('What is your name: ')
print('Your name is',name)
控制台输出
C:\>python script.py
What is your name: ABC
Your name is ABC
log.txt
文件
What is your name: Your name is ABC
不幸的是,输入ABC\n
仅显示在控制台上,而没有显示在log.txt
文件中。
是否可以将所有内容同时添加到控制台和log.txt
文件中?
控制台和log.txt
文件中的所需输出
What is your name: ABC
Your name is ABC
我想在控制台和log.txt
文件中都获得相似的(精确)输出吗?
如果有更简便的方法,也请告诉我。
答案 0 :(得分:1)
不能完全确定这是否是您要查找的内容,但请查看此question here。希望有帮助。
此外,最好再次关闭打开的文件。因此,如果您最终保留了代码,请执行类似的操作
f = open('log.txt', 'w')
sys.stdout = multifile([ sys.stdout, f])
// do more stuff
f.close()