0%

python-转换doc为docx

python-转换doc为docx

最近需要实现功能读取word文档,开发思路是使用python-docx库,读取过程中发现文档又doc,docx两种格式,python读取doc的方式没有太好的解决方法,所以使用pypiwin库把 doc文档转换为docx

库安装

读取转换总共需要两个外部库 分别为

  1. python-docx
  2. 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()方法放到最后,但是都不是解决方法 最后发现问题是 相对路径问题, 开始博主用的是相对路径,才报错的 改成绝对路径解决问题