python-转换doc为docx
最近需要实现功能读取word文档,开发思路是使用python-docx库,读取过程中发现文档又doc,docx两种格式,python读取doc的方式没有太好的解决方法,所以使用pypiwin库把 doc文档转换为docx
库安装
读取转换总共需要两个外部库 分别为
- python-docx
- pypiwin32
安装直接pip install 就ok没啥说的,网上查资料说 pypiwin32 安装有可能失败
1 2 3 4
| pip install python-docx pip install pypiwin32 #or python -m pip install pypiwin32
|
话不多说直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #!/bin/bash # encoding=utf-8 import docx import os, sys from win32com import client as wc
word = wc.Dispatch('Word.Application')
if len(sys.argv) < 2 : print("please input file") sys.exit()
wordName = sys.argv[1].lower()
def readDocs(fileName): file=docx.Document(fileName) for p in file.paragraphs: print(p.text)
''' 将doc文件转换成docx文件 ''' def docToDocx(fileName): try: print("开始处理 文件名:"+fileName) doc = word.Documents.Open(fileName) docxNamePath = fileName + "x" print('转换完成!'+docxNamePath) doc.SaveAs(docxNamePath, 12, False, "", True, "", False, False, False, False) finally: #一定要记得关闭docx,否则会出现文件占用 doc.Close() return docxNamePath try: print() if os.path.isfile(wordName): print("file exit") suffix = wordName.split('.')[1] if suffix == 'doc': wordName = docToDocx(os.getcwd() + "\\" +wordName) elif suffix != 'docx': print("please input type as doc docx") readDocs(wordName) finally: word.Quit()
|
问题
读取文件没啥问题,但是转换文件的时候遇到两个报错,其实问题是一个报错如下
1 2
| pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档打开失败。', '', 3010, -786427), None) pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Kingsoft WPS', '文档保存失败。', '', 3011, -2147418113), None)
|
从网上找了很多 都是一样的 说是 .Close()
方法放到最后,但是都不是解决方法 最后发现问题是 相对路径问题, 开始博主用的是相对路径,才报错的 改成绝对路径解决问题