在所有错误消息中打印python版本
我有一个由用户调用的python脚本,例如在所有错误消息中打印python版本,python,error-handling,Python,Error Handling,我有一个由用户调用的python脚本,例如pythonscript.py或python3script.py。如果此脚本引发错误,那么使用哪个python版本很重要 当然,我可以向用户请求用于执行script.py的命令,但是这可能无法解析python版本python可以是python3.4或python2.7的别名 我知道我可以在脚本中打印sys.version。但我不想在每次运行该脚本时都打印它,只是在发生错误的情况下 所以另一个想法是简单地将整个脚本包装在一个try中,除了块 import
pythonscript.py
或python3script.py
。如果此脚本引发错误,那么使用哪个python版本很重要
当然,我可以向用户请求用于执行script.py的命令,但是这可能无法解析python版本python
可以是python3.4
或python2.7
的别名
我知道我可以在脚本中打印sys.version
。但我不想在每次运行该脚本时都打印它,只是在发生错误的情况下
所以另一个想法是简单地将整个脚本包装在一个try中,除了块
import sys
try:
# original content of script.py
except:
print("Using python version {0}".format(sys.version))
raise
然而,在我看来,这并不是很像蟒蛇。那么,是否有一种更优雅的解决方案可以将sys.version
添加到每个错误消息中
这个问题不是重复的,因为我不想检查版本信息。我的脚本应该与所有版本的python一起运行。但是,应将自定义消息(在本例中为系统版本)附加到stacktrace。是
>>> import sys
>>> sys.version
我不想在每次运行该脚本时都打印它,只是在发生错误的情况下
使用语句您可以更改sys.excepthook
以包含所需的行为。
只需在脚本开头添加以下内容:
import sys
def my_except_hook(exctype, value, traceback):
print("Using python version {0}".format(sys.version))
sys.__excepthook__(exctype, value, traceback)
sys.excepthook = my_except_hook
如果代码中出现错误,则除了正常的错误消息外,还会打印python版本。如果使用日志记录
,则可以将其添加到输出格式中