繁体   English   中英

Python - Traceback,如何显示导入的文件名

[英]Python - Traceback, how to show filename of imported

我有以下内容:

try:
    package_info = __import__('app') #app.py
except:
    print traceback.extract_tb(sys.exc_info()[-1])
    print traceback.tb_lineno(sys.exc_info()[-1])

我从中得到的是:

[('test.py', 18, '<module>', 'package_info = __import__(\'app\')')]
18

现在这几乎是我想要的,这是实际错误开始的地方,但我需要遵循这一点并获得实际的感染,即app.py包含第17行的ä ,例如18。

这是我未经处理的实际错误消息:

第17行的文件C:\\ app.py中的非ASCII字符'\\ xc3',但未声明编码; 有关详细信息,请参阅http://www.python.org/peps/pep-0263.html “,('C:\\ app.py',17,1,无)),)

我找到了一些例子,但是所有这些都显示了影响点而不是问题的实际原因,如何解决这个问题(首先是Python2和Python3交叉支持,但Python2在这种情况下更重要)来获取文件名,行和问题的原因以类似的方式上面的元组?

捕获特定的异常并查看它具有的信息。 该消息是根据异常对象的参数进行格式化的,所以它的好处就是它的存在。 在这种情况下,SyntaxError包含filename属性。

try:
    package_info = __import__('app') #app.py
except SyntaxError, e:
    print traceback.extract_tb(sys.exc_info()[-1])
    print traceback.tb_lineno(sys.exc_info()[-1])
    print e.filename

为了我

except Exception as e:
    print e.__unicode__()

用于返回完全相同的消息

要同时兼容python 2.5和3.x(2.5不支持除Exception为e),请使用

try:
    package_info = __import__('app') #app.py

except SyntaxError:
    exc_type, exc, tb = sys.exc_info()
    print(exc)
    print('\n\n'.join(traceback.format_tb(tb, limit=5)))

版画

Non-ASCII character '\xc3' in file /foo/app.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details (app.py, line 2)
  File "foo.py", line 6, in <module>
    package_info = __import__('app') #app.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM