使用python-docx和win32com库实现批量转换doc文件为docx文件

作者:

文章目录
  • 在windows命令行窗口执行如下代码: pip install python-docx pip install pywin32 C:Userswgx58>pip install python-docx Collecting python-docx Using cached python_docx-1.2.0-py3-none-any.whl.metadata (2.0 kB) Requirement already satisfied: lxml>=3.1.0 in c:pythonlibsite-packages (from python-docx) (6.0.2) Requirement already satisfied: typing_extensions>=4.9.0 in c:pythonlibsite-packages (from python-docx) (4.15.0) Using cached python_docx-1.2.0-py3-none-any.whl (252 kB) Installing collected packages: python-docx Successfully installed python-docx-1.2.0 C:Userswgx58>pip install pywin32 Collecting pywin32 Downloading pywin32-311-cp313-cp313-win_amd64.whl.metadata (10 kB) Downloading pywin32-311-cp313-cp313-win_amd64.whl (9.5 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.5/9.5 MB 12.7 kB/s 0:09:26 Installing collected packages: pywin32 Successfully installed pywin32-311
  • import os import glob from win32com import client as wc from docx import Document import pythoncom def doc_to_docx(input_path, output_path): “”” 将单个doc文件转换为docx文件 “”” try: # 初始化COM组件(单线程) pythoncom.CoInitialize() # 创建Word应用程序对象 word = wc.Dispatch(“Word.Application”) word.Visible = False # 不显示Word界面 # 打开doc文件 doc = word.Documents.Open(input_path) # 保存为docx格式 doc.SaveAs(output_path, 16) # 16表示docx格式 # 关闭文档和Word应用程序 doc.Close() word.Quit() print(f”成功转换: {input_path} -> {output_path}”) return True except Exception as e: print(f”转换失败 {input_path}: {str(e)}”) return False finally: # 释放COM组件 pythoncom.CoUninitialize() def batch_doc_to_docx(input_folder, output_folder=None): “”” 批量转换文件夹中的所有doc文件为docx格式 Args: input_folder: 输入文件夹路径 output_folder: 输出文件夹路径,如果为None则使用输入文件夹 “”” if output_folder is None: output_folder = input_folder # 确保输出文件夹存在 if not os.path.exists(output_folder): os.makedirs(output_folder) # 查找所有doc文件 doc_files = glob.glob(os.path.join(input_folder, “*.doc”)) if not doc_files: print(f”在文件夹 {input_folder} 中未找到任何doc文件”) return print(f”找到 {len(doc_files)} 个doc文件,开始转换…”) success_count = 0 failed_files = [] for doc_file in doc_files: # 生成输出文件路径 filename = os.path.basename(doc_file) docx_filename = os.path.splitext(filename)[0] + “.docx” output_path = os.path.join(output_folder, docx_filename) # 转换文件 if doc_to_docx(doc_file, output_path): success_count += 1 else: failed_files.append(doc_file) # 输出转换结果 print(f”n转换完成!”) print(f”成功: {success_count}/{len(doc_files)}”) if failed_files: print(f”失败的文件:”) for file in failed_files: print(f” – {file}”) def main(): “”” 主函数,提供用户交互界面 “”” print(“=== DOC 转 DOCX 批量转换工具 ===”) # 获取输入文件夹 input_folder = input(“请输入包含doc文件的文件夹路径: “).strip() if not os.path.exists(input_folder): print(“错误:指定的文件夹不存在!”) return # 询问输出文件夹 use_same_folder = input(“是否将docx文件保存在同一文件夹?(y/n): “).strip().lower() if use_same_folder == ‘y’: output_folder = input_folder else: output_folder = input(“请输入输出文件夹路径: “).strip() # 开始转换 batch_doc_to_docx(input_folder, output_folder) if __name__ == “__main__”: main()
  • 程序运行结果如下: C:pythonpython.exe C:Userswgx58PycharmProjectsPythonProject1hello.py === DOC 转 DOCX 批量转换工具 ===请输入包含doc文件的文件夹路径: D:python_wgxword_doc是否将docx文件保存在同一文件夹?(y/n): n请输入输出文件夹路径: D:python_wgxword_docx找到 1 个doc文件,开始转换…成功转换: D:python_wgxword_docaa.doc -> D:python_wgxword_docxaa.docx 转换完成!成功: 1/1 进程已结束,退出代码为 0 到此这篇关于使用python-docx和win32com库实现批量转换doc文件为docx文件的文章就介绍到这了,更多相关python-docx win32com转换doc为docx内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python win32com库的使用示例 Python中win32com模块的使用 Python操作word常见方法示例【win32com与docx模块】 Python使用python-docx库操作word(创建、读取和插入)文档的完整指南 Python使用Python-docx库实现Word文档自动化 Python利用python-docx实现自动生成Word文档
  • 目录
    • 一、安装 python-docx 和 win32com 库
    • 二、编写如下程序代码
    • 三、测试程序

    windows命令行窗口执行如下代码:

    pip install python-docx
    pip install pywin32 
    
    C:Userswgx58>pip install python-docx
    Collecting python-docx
      Using cached python_docx-1.2.0-py3-none-any.whl.metadata (2.0 kB)
    Requirement already satisfied: lxml>=3.1.0 in c:pythonlibsite-packages (from python-docx) (6.0.2)
    Requirement already satisfied: typing_extensions>=4.9.0 in c:pythonlibsite-packages (from python-docx) (4.15.0)
    Using cached python_docx-1.2.0-py3-none-any.whl (252 kB)
    Installing collected packages: python-docx
    Successfully installed python-docx-1.2.0
    
    C:Userswgx58>pip install pywin32
    Collecting pywin32
      Downloading pywin32-311-cp313-cp313-win_amd64.whl.metadata (10 kB)
    Downloading pywin32-311-cp313-cp313-win_amd64.whl (9.5 MB)
       ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.5/9.5 MB 12.7 kB/s  0:09:26
    Installing collected packages: pywin32
    Successfully installed pywin32-311
    

    import os
    import glob
    from win32com import client as wc
    from docx import Document
    import pythoncom
    
    def doc_to_docx(input_path, output_path):
        """
        将单个doc文件转换为docx文件
        """
        try:
            # 初始化COM组件(单线程)
            pythoncom.CoInitialize()
            
            # 创建Word应用程序对象
            word = wc.Dispatch("Word.Application")
            word.Visible = False  # 不显示Word界面
            
            # 打开doc文件
            doc = word.Documents.Open(input_path)
            
            # 保存为docx格式
            doc.SaveAs(output_path, 16)  # 16表示docx格式
            
            # 关闭文档和Word应用程序
            doc.Close()
            word.Quit()
            
            print(f"成功转换: {input_path} -> {output_path}")
            return True
            
        except Exception as e:
            print(f"转换失败 {input_path}: {str(e)}")
            return False
        finally:
            # 释放COM组件
            pythoncom.CoUninitialize()
    
    def batch_doc_to_docx(input_folder, output_folder=None):
        """
        批量转换文件夹中的所有doc文件为docx格式
        
        Args:
            input_folder: 输入文件夹路径
            output_folder: 输出文件夹路径,如果为None则使用输入文件夹
        """
        if output_folder is None:
            output_folder = input_folder
        
        # 确保输出文件夹存在
        if not os.path.exists(output_folder):
            os.makedirs(output_folder)
        
        # 查找所有doc文件
        doc_files = glob.glob(os.path.join(input_folder, "*.doc"))
        
        if not doc_files:
            print(f"在文件夹 {input_folder} 中未找到任何doc文件")
            return
        
        print(f"找到 {len(doc_files)} 个doc文件,开始转换...")
        
        success_count = 0
        failed_files = []
        
        for doc_file in doc_files:
            # 生成输出文件路径
            filename = os.path.basename(doc_file)
            docx_filename = os.path.splitext(filename)[0] + ".docx"
            output_path = os.path.join(output_folder, docx_filename)
            
            # 转换文件
            if doc_to_docx(doc_file, output_path):
                success_count += 1
            else:
                failed_files.append(doc_file)
        
        # 输出转换结果
        print(f"n转换完成!")
        print(f"成功: {success_count}/{len(doc_files)}")
        
        if failed_files:
            print(f"失败的文件:")
            for file in failed_files:
                print(f"  - {file}")
    
    def main():
        """
        主函数,提供用户交互界面
        """
        print("=== DOC 转 DOCX 批量转换工具 ===")
        
        # 获取输入文件夹
        input_folder = input("请输入包含doc文件的文件夹路径: ").strip()
        
        if not os.path.exists(input_folder):
            print("错误:指定的文件夹不存在!")
            return
        
        # 询问输出文件夹
        use_same_folder = input("是否将docx文件保存在同一文件夹?(y/n): ").strip().lower()
        
        if use_same_folder == 'y':
            output_folder = input_folder
        else:
            output_folder = input("请输入输出文件夹路径: ").strip()
        
        # 开始转换
        batch_doc_to_docx(input_folder, output_folder)
    
    if __name__ == "__main__":
        main()
    

    程序运行结果如下:

    C:pythonpython.exe C:Userswgx58PycharmProjectsPythonProject1hello.py 
    === DOC 转 DOCX 批量转换工具 ===
    请输入包含doc文件的文件夹路径: D:python_wgxword_doc
    是否将docx文件保存在同一文件夹?(y/n): n
    请输入输出文件夹路径: D:python_wgxword_docx
    找到 1 个doc文件,开始转换…
    成功转换: D:python_wgxword_docaa.doc -> D:python_wgxword_docxaa.docx

    转换完成!
    成功: 1/1

    进程已结束,退出代码为 0

    到此这篇关于使用python-docx和win32com库实现批量转换doc文件为docx文件的文章就介绍到这了,更多相关python-docx win32com转换doc为docx内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python win32com库的使用示例
    • Python中win32com模块的使用
    • Python操作word常见方法示例【win32com与docx模块】
    • Python使用python-docx库操作word(创建、读取和插入)文档的完整指南
    • Python使用Python-docx库实现Word文档自动化
    • Python利用python-docx实现自动生成Word文档

    站内搜索