保存控制台应用程序的输出

保存控制台应用程序的输出

长期以来,我一直在尝试做一些基本的事情:将控制台应用程序的输出实时保存到文件中。到目前为止,我尝试过:

  1. cygwin 的 tee:它抑制 ctrl+c。
  2. 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()

相关内容