gpt4 book ai didi

python - 为什么pywintypes.com_error的信息无法读取?

转载 作者:行者123 更新时间:2023-11-30 23:49:41 24 4
gpt4 key购买 nike

在安装了 pywin32-216.win32-py2.7 的 Python 2.7.2 下,当我使用 win32com 模块在 Windows 上处理 Excel 时,如下所示:

>>> import win32com.client
>>> xlsApp = win32com.client.Dispatch('Excel.Application')
>>> xlsApp.Workbooks.Open(r'D:/test.xls')

我收到错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<COMObject <unknown>>", line 8, in Open
pywintypes.com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3',
(0, u'Microsoft Office Excel', u'\u540d\u4e3a\u201ctest.xls\u201d\u7684\u6587\u6
863\u5df2\u7ecf\u6253\u5f00\u3002\u4e0d\u80fd\u540c\u65f6\u6253\u5f00\u540c\u540
d\u6587\u4ef6\uff0c\u65e0\u8bba\u5b83\u4eec\u662f\u5426\u5728\u540c\u4e00\u6587\
u4ef6\u5939\u4e2d\u3002\n\u8981\u6253\u5f00\u7b2c\u4e8c\u4efd\u6587\u6863\uff0c\
u8bf7\u5173\u95ed\u5df2\u7ecf\u6253\u5f00\u7684\u6587\u6863\uff0c\u6216\u8005\u9
1cd\u65b0\u547d\u540d\u5176\u4e2d\u7684\u4e00\u4e2a\u6587\u6863\u3002', None, 0,
-2146827284), None)

虽然信息不可读,但我不知道出了什么问题!

在互联网上搜索后,我发现了一些有用的信息:http://www.python-forum.org/pythonforum/viewtopic.php?f=15&t=17665 :

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, u'Microsoft Office Excel', u"'test .xls' could not be found. Check the spelling of the file name, and verify that the file location is correct.\n\nIf you are trying to open the file from your list of most recently used files on the File menu, make sure that the file has not been renamed, moved, or deleted.", u'C:\Program Files\Microsoft Office\OFFICE11\1033\xlmain11.chm', 0, -2146827284), None)

我猜这是同样的问题,所以我先创建一个Excel文件'D:/test.xls',然后一切就OK了:

>>> xlsApp.Workbooks.Open(r'D:/test.xls')
<COMObject Open>

如果我得到可读的错误提示,我会立即解决问题,没有任何困难!

我想知道为什么我从 win32com.client 收到这样的错误?我可以做些什么来使信息可读吗?

我将感谢您的帮助!

最佳答案

我想它会这样出现,因为您正在远东亚洲(也许是中国?)的某个地方使用国际化设置,并且您在命令提示符中使用Python。我不确定问题是否出在 Python、命令提示符或两者的组合上,但无论哪种方式,这两者的组合在非拉丁国际化设置中都不能很好地工作。

我建议使用 IDLE相反,因为它似乎可以正确支持 Unicode 字符。以下是我在 IDLE 中查看最后一个字符串时发生的情况。这段文字对我来说没有任何意义,但可能对你有帮助:

IDLE 2.6.4      >>> z = u'\u540d\u4e3a\u201ctest.xls\u201d\u7684\u6587\u6863\u5df2\u7ecf\u6253\u5f00\u3002\u4e0d\u80fd\u540c\u65f6\u6253\u5f00\u540c\u540d\u6587\u4ef6\uff0c\u65e0\u8bba\u5b83\u4eec\u662f\u5426\u5728\u540c\u4e00\u6587\u4ef6\u5939\u4e2d\u3002\n\u8981\u6253\u5f00\u7b2c\u4e8c\u4efd\u6587\u6863\uff0c\u8bf7\u5173\u95ed\u5df2\u7ecf\u6253\u5f00\u7684\u6587\u6863\uff0c\u6216\u8005\u91cd\u65b0\u547d\u540d\u5176\u4e2d\u7684\u4e00\u4e2a\u6587\u6863\u3002'>>> print z名为“test.xls”的文档已经打开。不能同时打开同名文件,无论它们是否在同一文件夹中。要打开第二份文档,请关闭已经打开的文档,或者重新命名其中的一个文档。>>> 

但是,即使使用 IDLE,当您遇到异常时,文本仍然会像上面那样显示。如果发生这种情况,您需要做的是从最后引发的异常中获取数据,并从其中打印相关字符串。

要获取解释器中引发的最后一个异常,您可以使用 sys.last_value 。下面是一个包含不同异常消息的示例:

>>> import sys>>> with open('nonexistent.txt') as f: pass...Traceback (most recent call last):  File "", line 1, in     with open('nonexistent.txt') as f: passIOError: [Errno 2] No such file or directory: 'nonexistent.txt'>>> sys.last_valueIOError(2, 'No such file or directory')>>> print(sys.last_value[1])No such file or directory>>> 

关于python - 为什么pywintypes.com_error的信息无法读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7544587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com