gpt4 book ai didi

python - 如何在 Python 中为 argparse 设置自定义输出处理程序?

转载 作者:太空狗 更新时间:2023-10-29 22:11:04 24 4
gpt4 key购买 nike

我已将 logger 配置为同时打印到终端 stdout 和文件中,这样我就可以拥有一个日志消息存档,供我引用。

这很容易通过将 FileHandler 添加到您的 logging 对象来实现。简单易行。

我现在想要完成的是使 argparse 也记录到同一个文件,并在遇到解析错误时将其记录到 stdout。到目前为止,它只打印到 stdout。我查看了 argparse documentation但我找不到任何有关为 argparse 设置不同的输出流或管道的信息。

可以吗?怎么办?

最佳答案

查看 argparse.py source code似乎没有办法配置此行为。

我的建议是:

  • 提交带有补丁的错误报告 :)

覆盖/补丁:

  • print_* 方法
  • 错误 方法。

print_* 方法似乎采用可选的 file 参数,默认为 _sys.stdout

更新:或者你可以做这样的事情,在解析参数时临时重定向 sys.stdout:

from contextlib import contextmanager

@contextmanager
def redirect_stdout_stderr(stream):
old_stdout = sys.stdout
old_stderr = sys.stderr
sys.stdout = stream
sys.stderr = stream
try:
yield
finally:
sys.stdout = old_stdout
sys.stderr = old_stderr


with redirct_stdout_stderr(logstream):
args = parser.parse_args()

关于python - 如何在 Python 中为 argparse 设置自定义输出处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29935283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com