pywin32:批量将doc文件转为docx

学习自:python批量把doc文件转换成docx_python批量将doc转docx-CSDN博客

目的:将某个目录下(包括子目录)中的所有doc转为docx

import os
import docx
import win32com.client as win32

url='D:\规范文档'
word=win32.Dispatch('Word.Application')
for root,dir2,files in os.walk(url): #遍历目录url
    for file in files:
        fr=os.path.join(root,file) #fr为文件的完整路径
        fn,ex=os.path.splitext(file) #提取文件名和后缀
        if ex=='.doc':
            doc=word.Documents.Open(fr)
            fr+='x' #后缀改为docx
            doc.SaveAs(fr,12,False,'',True,False,False,False,False)
            doc.Close() #不关闭的话会打开很多文件窗口

期间遇到的一系列问题

1、ImportError:DLL load filed

解决方法:菜单栏→Run→Edit Configuration→Environment Variables→新建一项:

name为path

Value为python.exe所在的目录下的Lib目录下的pywin32_system32目录(实在找不到这个目录可以在Lib用搜索的方式找找这个目录在哪)

2、ImportError:cannot import name 'winerror' 或ModuleNotFoundError: No module named 'win32api'

去报错的这个__init__.py中,把import winerror语句改为from . import winerror。

然后把win32目录下的winerror.py复制到__init__.py同级目录下。

对于所有的cannot import name,都可用这种做法做,即把win32包中的同名py或pyd文件复制到__init__.py的同级目录下。再改import语句为from . import module名即可。

3、no model named pywintypes、no module named win32com.client、ImportError: cannot import name 'client'

解决方法同2,找到pywintypes.py或pyd文件(如果是client,就把client这个目录复制过去),把它复制到__init__.py同级目录下。

去报错的这个__init__.py中,把import winerror语句改为from . import pywintypes。

4、在cmd中用Python可以import某个module,但是在pycharm的terminal中却不行

一般是pycharm的Terminal配置有问题,File→Settings→Tools→Terminal,修改Start Directorypython.exe所在的目录即可。

posted @ 2024-03-14 14:24  ShineLe  阅读(36)  评论(0编辑  收藏  举报