python读取word文件编码不对_python win32com在读取word文档时,遇到的问题

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

IDispatch =pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)

com_error: (-2147221008, '\xc9\xd0\xce\xb4\xb5\xf7\xd3\xc3 CoInitialize\xa1\xa3', None, None)

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

importpythoncom

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 importwin32com2 from win32com.client importDispatch3 msword = Dispatch('Word.Application')4 msword.Visible =05 msword.DisplayAlerts =06 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()),才得以解决,但是具体原因还没有探明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值