如何捕获打开文件时的pywin32com异常

1 投票
1 回答
2421 浏览
提问于 2025-04-16 19:29

我正在尝试在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 块中捕捉它

撰写回答