Python记录通过命令提示符传递的所有内容

时间:2019-06-25 15:17:35

标签: python logging

我正在尝试记录通过命令提示符传递的所有内容。这包括由python脚本启动的批处理脚本输出。

如果我这样运行python文件

python logEverything.py >> logFile.txt

它给了我我想要的东西,并且命令提示符中打印的所有内容都将放入该文件中。

此问题是命令提示符下不再显示任何内容。另外,我希望能够在程序内部指定日志文件路径。

有没有办法记录通过命令提示符利用Python 传递的所有信息?兼容Windows和Linux吗?

所以logEverything.py就是这样

import sys
def main():
    import io
    old_stdout = sys.stdout # Memorize the default stdout stream
    sys.stdout = buffer = io.StringIO()


    print('Log test')
    os.system('this is a test')
    print('More logging')


    #Finished -> put everything into log_file.txt
    sys.stdout = old_stdout
    whatWasPrinted = buffer.getvalue() 
    print(whatWasPrinted) # Why not to print it?
    buffer.close()

此解决方案部分有效,但无法捕获os.system()的输出

1 个答案:

答案 0 :(得分:0)

来自Askubuntu上的this问题:

  

git

     

标准输出流和标准错误流都将被复制到文件中,同时仍在终端中可见。如果文件已经存在,则新数据将附加到文件末尾。

因此您可以使用command |& tee -a output.txt