• python win32com在读取word文档时,遇到的问题


    1. 使用多线程编程,且需要调用win32com模块来打开word文档时,常见的错误如下:

    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
    com_error: (-2147221008, 'xc9xd0xcexb4xb5xf7xd3xc3 CoInitializexa1xa3', None, None)

    将第二行error中的第二项,打印出来是:“尚未调用 CoInitialize”,那么在代码中加入如下两行代码,即可解决:

    import pythoncom
    pythoncom.CoInitialize()

    那么pythoncom是用来做什么的呢?

    在网址http://docs.activestate.com/activepython/2.4/pywin32/pythoncom.html中,查询pythoncom的CoInitialize()函数的解释是:

    Initialize the COM libraries for the calling thread.

    2. 读取word文档的内容,常见错误是,读英文的时候,没有问题,但是碰到中文的时候,就会报错,见下面代码:

    1 import win32com
    2 from win32com.client import Dispatch
    3 msword = Dispatch('Word.Application')
    4 msword.Visible = 0
    5 msword.DisplayAlerts = 0
    6 doc = msword.Documents.Open(FileName=u"J:\study.docx", Encoding='gb18030')
    7 range = doc.Range(doc.Content.Start, doc.Content.End)
    8 text = range.__str__()

    出现的错误是:

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-18: ordinal not in range(128)

    修改成unicode(range),还是报错,后修改成text = unicode(range()),才得以解决,但是具体原因还没有探明。

  • 相关阅读:
    python 函数嵌套
    python 函数对象
    python 函数参数
    python 连接MySQL报错及解决方案
    解决 No module named pip
    python 文件处理
    python
    python 元祖
    python 读取域名信息
    ubuntu 配置网卡,DNS, iptables
  • 原文地址:https://www.cnblogs.com/AlgorithmDot/p/3386972.html
Copyright © 2020-2023  润新知