有没有简单的方法来打印 Unix 风格的错误信息?

Is there an easy way to print Unix-style error messages?

我想打印脚本中的基本错误消息。它们应该有脚本的名称(即 sys.argv[0]),然后是消息,并且应该被打印到 stderr。有使用标准库的简单方法吗?

我写了下面的内容(受 this related answer 启发)并将它放在自己的模块中,这样我就可以将它导入我的脚本中,但我觉得有更好的方法。

from __future__ import print_function
import sys

def print_error(*args, **kwargs):
    """Print script name and anything else to stderr."""
    print_stderr(sys.argv[0] + ':', *args, file=sys.stderr, **kwargs)

最简单的方法是使用logging。先将其格式设置为'%(pathname)s: %(message)s',然后使用logging.error()打印。例如:

# Setup
import logging
logging.basicConfig(format='%(pathname)s: %(message)s')

# Print error
logging.error('Test error message')

用法:

$ python3 test.py 
test.py: Test error message
$ python3 ~/test.py 
/home/wja/test.py: Test error message

有关 pathname 和其他可用信息的详细信息,请参阅 LogRecord attributes