在Python中向用户显示错误的最佳方式(标准)是什么(例如:错误的语法,无效的参数,逻辑错误)?
该方法应在标准错误中打印错误并退出程序。
答案 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
提供了更多可能性(发送各种严重性的消息) ,过滤一些,放一些文件,等等),但因此它不可避免地有点复杂。