import os
from win32com import client
import time
base_dir = r"E:\xx\xxx\xxxx"
for root, dirs, files in os.walk(base_dir):
n = 1
for file in files:
if file.endswith(".doc"):
time.sleep(5)
print(file)
word = client.gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(os.path.abspath(root + "\\" + file))
doc.SaveAs('E:/xx/xxx/xxxx/docx/'+ file.replace('.doc','.docx'), 16)
doc.Close()
word.Quit()
错误
1. pywin32
import win32api; ImportError: DLL load failed: 找不到指定的程序
224、225新版本发布的有问题,回退到223版本即可
pip install pywin32==223
2.
pywintypes.com_error: (-2147352573, ‘找不到成员。‘, None, None) pywintypes.com_error: (-2147023174, ‘RPC 服务器不可用。’, None, None) raise AttributeError("%s.%s" % (self.username, attr)) AttributeError: Word
解决方案: (1) 用绝对路径 (2) base_dir = r"E:\xx\xxx\xxxx" 加了r (3) os.path.join(root, file) 改为 os.path.abspath(root + “\” + file) (4) 修改了存储路径(不用os.path.join) (5) docx 和 doc放在不同文件夹下 (6) 加了 time.sleep(5) 最后不知道哪个起作用了,成功了
3. 后续读取docx错误
python docx.opc.exceptions.PackageNotFoundError:打开文档时找不到包 python docx.opc.exceptions.PackageNotFoundError: Package not found when opening Document (1)将word = client.Dispatch(‘Word.Application’)改为 word = client.gencache.EnsureDispatch(‘Word.Application’) 未解决 (2)用word(office)打不开,显示文件格式与文件拓展名不匹配(docx实际并不是docx) 发现电脑doc docx默认打开方式为wps,修改默认打开方式为word(office)
|