如何捕获打开文件时的pywin32com异常
我正在尝试在Python中使用COM打开一个Excel文件,并且想要捕捉文件未找到的错误:
我首先尝试捕捉IOError:
try:
output = xl.Workbooks.Open(Params.workbookName)
except IOError as reason:
print reason
exit()
但是,当COM遇到文件未找到的问题时,它并不会抛出IOError,而是抛出一种叫做com_error的错误:
com_error: (-2147352567, '发生了异常。', (0, u'Microsoft Office Excel', u"'asdf.xlsx' 找不到。请检查文件名的拼写,并确认文件位置是否正确。\n\n如果你是想从最近使用的文件列表中打开这个文件,请确保文件没有被重命名、移动或删除。", u'C:\Program Files (x86)\Microsoft Office\Office12\1033\XLMAIN11.CHM', 0, -2146827284), None)
所以我逻辑上尝试了这个:
try:
output = xl.Workbooks.Open(Params.workbookName)
except com_error as reason:
print reason
exit()
但是……
NameError: global name 'ComError' is not defined
1 个回答
2
试试这个:
from pythoncom import com_error
然后在你的 except
块中捕捉它