长期以来,我一直在尝试做一些基本的事情:将控制台应用程序的输出实时保存到文件中。到目前为止,我尝试过:
- cygwin 的 tee:它抑制 ctrl+c。
- powershell tee:不会自动刷新。此建议(for-each)也不会自动刷新: 运行程序并实时记录到屏幕和文件中
重申一下:我只是想将输出保存到日志文件,而不更改程序的任何方面或行为。不确定为什么这不是 tee 的默认行为,更不用说为什么它没有这样的选项。
更不用说我使用 powershell 解决的其他问题(编码、红色注释):
pwsh -Command "$PSDefaultParameterValues = @{'Out-File:Encoding' = 'utf8'}; python run2.py 2>&1 | % ToString | Tee-Object _log.ans"
答案1
可笑的是;这里tee.py
:
import os, sys
if len(sys.argv) < 2:
print( "Usage: ... | python", os.path.basename( sys.argv[0] ), "<log_file>" )
sys.exit()
fname = sys.argv[1]
f = open( fname, 'w' )
while 1:
ch = sys.stdin.read(1)
if ch == '': # EOF
break
print( ch, end = '' )
sys.stdout.flush()
f.write( ch )
f.flush()