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

时间:2011-06-13 21:53:05

标签: python winapi excel com custom-exceptions

我正在尝试使用COM在python中打开一个excel文件,并尝试捕获找不到的文件错误:

我首先尝试捕获IOError:

try:
   output = xl.Workbooks.Open(Params.workbookName)
except IOError as reason:
   print reason
   exit()

但是当COM找不到文件时,COM不会引发IO错误,而是引发了一个叫做com_error的东西:

  

com_error:(-2147352567,'例外   发生了。',(0,u'Microsoft Office   Excel',u“'asdf.xlsx'不可能   找到。检查文件的拼写   名称,并验证该文件   位置是正确的。\ n \ n如果你是   尝试从列表中打开文件   最近使用的文件,请确保   该文件尚未重命名,   移动或删除。“,u'C:\ Program   文件(x86)\ Microsoft   办公室\ OFFICE12 \ 1033 \ XLMAIN11.CHM”,   0,-2146827284),无)

逻辑上我试过这个:

try:
   output = xl.Workbooks.Open(Params.workbookName)
except com_error as reason:
   print reason
   exit()

但是...

NameError: global name 'ComError' is not defined

1 个答案:

答案 0 :(得分:1)

尝试:

from pythoncom import com_error

并在except

中捕获它