如何在Python中显示用户错误

时间:2010-09-11 16:44:44

标签: python standards

在Python中向用户显示错误的最佳方式(标准)是什么(例如:错误的语法,无效的参数,逻辑错误)?

该方法应在标准错误中打印错误并退出程序。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:4)

在Python 2中,例如:

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

在Python 3(或模块顶部带有from __future__ import print_function语句的2.6或2.7)中,print成为一个函数,“打印到标准错误”的语法现在是

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

(比Python 2中所需的奇怪>>更友好的语法; - )。

print与(比如说)sys.stderr.write的(小)优势在于您获得“所有现代便利”:错误消息的所有部分都会自动转换为字符串,它们会输出使用空格分隔符,最后输出一个行结束(除非您特别要求)。要使用sys.stderr.write,您需要构建要输出的确切字符串,通常使用字符串格式化结构 - 当然,这只是一个小问题。

logging通常是首选,但不是在您特别希望错误消息转到标准错误时,而是仅限于标准错误:logging提供了更多可能性(发送各种严重性的消息) ,过滤一些,放一些文件,等等),但因此它不可避免地有点复杂。