【问题标题】:How to catch a pywin32com exception on opening files如何在打开文件时捕获 pywin32com 异常
【发布时间】:2016-07-18 21:48:38
【问题描述】:

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

我首先尝试捕获 IOError:

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

但是当 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

【问题讨论】:

    标签: python winapi excel com custom-exceptions


    【解决方案1】:

    试试:

    from pythoncom import com_error
    

    并在您的 except 块中捕获它

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2014-07-25
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多