我一直在阅读有关redirect prints to log file的信息,但是我不明白为什么接受的答案不能真正按预期工作。
原始代码在Python2中,我在使用Python3时对它进行了一些修改。
接受的答案: https://stackoverflow.com/a/2513511/9013730
import os
def test():
cmd = 'ver'
print("1. Running command:",cmd) # message.log only, NOT in console
os.system(cmd) # This appear in console only, but not in message.log
print('3. Done') # message.log only, NOT in console
import sys
old_stdout = sys.stdout
log_file = open("message.log","w")
sys.stdout = log_file
print("This will be written to message.log") # message.log only, NOT in console
test()
sys.stdout = old_stdout
log_file.close()
控制台输出
如您所见,在控制台中仅打印出os.system(cmd)
,而在message.log输出中却没有看到它。
Microsoft Windows
message.log输出
当我检查message.log输出时,os.system(cmd)
不在那儿。
This will be written to message.log
1. Running command: ver
3. Done
是否可以在控制台和message.log中产生相似的(精确)输出?
控制台和message.log中所需的输出
This will be written to message.log
1. Running command: ver
Microsoft Windows
3. Done