如何在Python中将标准错误写入文件,但将标准输出打印到控制台?
如何在Python中将标准错误写入文件,但将标准输出打印到控制台?
这个问题已经有答案了:
在这个例子中,我想要在 try 块
内将内容 写入
到控制台 (std.out)
;
但当 except 块
抛出异常时,我想将异常内容写到重定向到 log file
的 std.err
中。
我可以在 except 块
中打开一个 file
并写入它。但是这需要针对每个 try-catch
块进行操作,因此如果有一个将这些异常重新定向到 std.err
并记录 std.error 的替代方案,将会更好。
>>> try: ... print "hello world" ... 1/0 ... except ZeroDivisionError as e: ... print "exception" ... hello world exception
admin 更改状态以发布 2023年5月21日
如果希望打印到stderr,请使用sys.stderr
,让操作系统和用户处理打印到std.err的文本去向。这样,用户可以在Posix终端上运行python your_script.py 2> my_err_output
,并且仍然可以捕获std.err内容。
如果想要将日志信息输出到特定文件,请使用日志模块。
不要修改非常标准的概念的行为 - 这将是出错的。正确的记录允许您捕获所需的信息,但允许例外的跟踪(这些跟踪被派生到stderr
)以便让用户找到您的特殊文件。