起初,我有一个简单的程序将整个输出打印到控制台。
最初的代码仅在控制台中显示输出
import os, subprocess
print("1. Before")
os.system('ver')
subprocess.run('whoami')
print('\n2. After')
控制台输出
1. Before
Microsoft Windows [Version 10]
user01
2. After
接着,我决定在将原始输出发送到控制台的同时,在日志文件(log.txt)上也保留一份副本。
因此,这是新代码。
import os, subprocess, sys
old_stdout = sys.stdout
log_file = open("log.txt","w")
sys.stdout = log_file
print("1. Before") # This appear in message.log only, but NOT in console
os.system('ver') # This appear in console only, but NOT in message.log
subprocess.run('whoami') # This appear in console only, but NOT in message.log
print('\n2. After') # This appear in message.log only, but NOT in console
sys.stdout = old_stdout
log_file.close()
很遗憾,这个并没有像预期的那样有效。输出的部分内容仅在控制台上显示(
os.system('ver')
和 subprocess.run('whoami')
),而 print()
函数则只在 log.txt
文件中显示,不再出现在控制台上。
控制台输出
Microsoft Windows [Version 10]
user01
在
log.txt
文件中输出结果。1. Before
2. After
我希望在控制台和
log.txt
文件中获得类似的输出。这是否可能?我的新代码有什么问题?请告诉我如何修复它。期望输出结果应该在控制台和
log.txt
文件中都一致。1. Before
Microsoft Windows [Version 10]
user01
2. After
tee logfile
,请参见此处https://en.wikipedia.org/wiki/Tee_(command)。 - VPfB