我正在检查标准流的工作方式,目前我正在使用Python处理stderr
。为了更清楚地解释,以下是我的代码:
print("Python")
testt()
当我运行代码时,我得到以下结果:
Python
Traceback (most recent call last):
File "C:/Python34/s3.py", line 5, in <module>
testt()
NameError: name 'testt' is not defined
现在我想将错误信息保存到文本文件中,所以我的代码如下:
import sys
sys.stderr = open('err.txt', 'w') # I tried with 'err.log' also
print("Python")
testt()
sys.stderr.close()
sys.stderr = sys.__stderr__
现在当我运行程序时,错误信息既没有显示在Python shell中,也没有保存到
err.txt
文件中。当我检查
err.txt
文件属性时,它显示该文件最近已被修改(即运行程序时的时间),但文件是空白的。可能出现了什么问题?我使用的是Windows和Python 3.4。
我安装了Python 3.5,但仍然遇到相同的问题。我还尝试使用contextlib,但仍然不成功。我的修改代码如下:
contextlib
。from contextlib import redirect_stdout, redirect_stderr
with open('C:/Users/Jeri_Dabba/Desktop/Shortcutz/test/outfile.txt', 'w') as file, redirect_stdout(file):
help(pow)
with open('C:/Users/Jeri_Dabba/Desktop/Shortcutz/test/errfile.log', 'a') as file1, redirect_stderr(file1):
testt()
redirect_stdout(file)
已经正常工作,它会将输出保存到文件中;而 redirect_stderr(file1)
没有将 stderr
保存到文件中。可能出现了什么问题?
sys.stderr.close()
еТМsys.stderr = sys.__stderr__
пЉЯ - Remi Guan