当前位置: 代码网 > it编程>前端脚本>Python > 使用python-docx和win32com库实现批量转换doc文件为docx文件

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

2025年12月18日 Python 我要评论
一、安装 python-docx 和 win32com 库在windows命令行窗口执行如下代码:pip install python-docxpip install pywin32 c:\users

一、安装 python-docx 和 win32com 库

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

pip install python-docx
pip install pywin32 

c:\users\wgx58>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:\python\lib\site-packages (from python-docx) (6.0.2)
requirement already satisfied: typing_extensions>=4.9.0 in c:\python\lib\site-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:\users\wgx58>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:\python\python.exe c:\users\wgx58\pycharmprojects\pythonproject1\hello.py 
=== doc 转 docx 批量转换工具 ===
请输入包含doc文件的文件夹路径: d:\python_wgx\word_doc
是否将docx文件保存在同一文件夹?(y/n): n
请输入输出文件夹路径: d:\python_wgx\word_docx
找到 1 个doc文件,开始转换...
成功转换: d:\python_wgx\word_doc\aa.doc -> d:\python_wgx\word_docx\aa.docx

转换完成!
成功: 1/1

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

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com