我的问题类似于redirect prints to log file
去年开始使用Python进行编码时,直到现在我还不了解logging
。
问题是代码越来越大。
我一直在尝试给出的解决方案,但是它们都无法正常工作,因为此代码包含input()
,print()
和os.system()
最接近的解决方案是从他的answer中的shx2
到How to duplicate sys.stdout to a log file?
假设这是代码
import os, 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("\nWhat is your name: ")
print("Your name is",name)
age = input("\nHow old are you: ")
print("You're ",age)
print("\nYour IP Address is: ")
os.system('ipconfig | findstr IPv4')
控制台输出
C:\>python script.py
What is your name: ABC
Your name is ABC
How old are you: 10
You're 10
Your IP Address is:
IPv4 Address. . . . . . . . . . . : 127.0.0.1
C:\>
从控制台输出的
print
毫无问题地被重定向到
log.txt
,但是
input
和
os.system
没有问题
log.txt
输出
What is your name: Your name is ABC
How old are you: You're 10
Your IP Address is:
是否可以将控制台上的所有内容(完全相同)转换为
log.txt
?
请您参考如下方法:
一种选择是将输出重定向到文件
C:\>python script.py > filename.txt
我尝试了这个,似乎可以产生您想要的东西。尽管您不会输入提示(例如,“您叫什么名字”或“您几岁”),但这样做只是用光标在空白行上。以 this image为例。