我的scrpt有以下几行:
libro_dia = xlrd.open_workbook(file_contents = libro_dia)
Run Code Online (Sandbox Code Playgroud)
如果libro_dia无效,则会引发以下错误:
XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '<!DOCTYP'
Run Code Online (Sandbox Code Playgroud)
我想要处理这个错误,所以我写道:
try:
libro_dia = xlrd.open_workbook(file_contents = libro_dia)
except XLRDError:
no_termina = False
Run Code Online (Sandbox Code Playgroud)
但它引发了以下错误:
NameError: name 'XLRDError' is not defined
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
您没有导入XLRDError.我不熟悉xlrd,但是类似于:
from xlrd import XLRDError
Run Code Online (Sandbox Code Playgroud)
可能有用.或者,Error在处理时符合您的资格:
try:
libro_dia = xlrd.open_workbook(file_contents = libro_dia)
except xlrd.XLRDError: #<-- Qualified error here
no_termina = False
Run Code Online (Sandbox Code Playgroud)
以上是假设您有以下导入:
import xlrd
Run Code Online (Sandbox Code Playgroud)
回应你的评论:
有几种方法可以在python中使用import.如果使用导入import xlrd,则必须将该模块中的每个对象限定为xlrd.SomeObject.另一种方法是使用表单from xlrd import *,这将允许您引用XLRD错误而不使用其"模块名称空间".这虽然是懒惰的,但却是一个坏主意,因为它可能导致命名空间冲突.如果您想在没有限定条件的情况下引用错误,那么正确的方法就是这样from xlrd import XLRDError,这将允许您说出来except XLRDError.阅读有关Python模块的更多信息