如何在Python中显示用户错误

2 投票
2 回答
6387 浏览
提问于 2025-04-16 04:00

在Python中,向用户显示错误信息的最佳方法是什么?比如说:语法错误、无效的参数、逻辑错误等等。

这个方法应该把错误信息打印到标准错误输出,并且结束程序的运行。

2 个回答

4

在Python 2中,比如说:

import sys
print>>sys.stderr, "Found", numerrs, "errors in the input."
sys.exit(1)

在Python 3(或者在2.6或2.7中加上from __future__ import print_function这行代码),print变成了一个函数,打印错误信息的语法现在是

print("Found", numerrs, "errors in the input.", file=sys.stderr)

(这个语法比Python 2中奇怪的>>要友好一些;-)。

print相比于(比如说)sys.stderr.write的一个小优点是,你可以享受到“现代化的便利”:错误信息的所有部分都会自动变成字符串,输出时会用空格隔开,最后还会自动换行(除非你特别要求不换行)。使用sys.stderr.write时,你需要自己构建要输出的字符串,通常要用到字符串格式化的技巧——这其实也没什么大不了的,只是稍微麻烦一点。

通常情况下,大家更喜欢用logging,但如果你特别想把错误信息只输出到标准错误流,那就不太适合用它了:logging提供了很多更多的功能(比如发送不同严重程度的消息、过滤一些消息、把某些消息写入文件等等),所以它的使用相对复杂一些。

4

在小程序中,我会用类似这样的方式:

import sys

def error(message):
    sys.stderr.write("error: %s\n" % message)
    sys.exit(1)

而对于更大的工具,我会使用 logging 这个包。

def error(message):
    logging.error('error: ', message)
    sys.exit(1)

撰写回答