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()),才得以解决,但是具体原因还没有探明。