import os
from win32com import client as wc
import pythoncom
def convert_doc_to_docx(doc_path, docx_path):
"""将.doc文件转换为.docx文件"""
try:
# 获取绝对路径
abs_doc_path = os.path.abspath(doc_path)
abs_docx_path = os.path.abspath(docx_path)
# 初始化COM
pythoncom.CoInitialize()
# 创建Word应用程序对象
word = wc.Dispatch('Word.Application')
word.Visible = False # 设置Word不可见
try:
# 打开文档
doc = word.Documents.Open(abs_doc_path)
# 保存为.docx格式
doc.SaveAs2(abs_docx_path, FileFormat=16) # 16代表docx格式
doc.Close()
# 成功转换后删除原文件
if os.path.exists(abs_docx_path):
os.remove(abs_doc_path)
print(f"转换成功并删除原文件: {doc_path}")
except Exception as e:
print(f"处理文件时出错: {doc_path}, 错误: {str(e)}")
finally:
# 确保Word应用程序被关闭
word.Quit()
except Exception as e:
print(f"转换失败: {doc_path}, 错误: {str(e)}")
finally:
# 释放COM
pythoncom.CoUninitialize()
def process_directory(directory):
"""递归处理目录中的所有.doc文件"""
try:
# 获取绝对路径
abs_directory = os.path.abspath(directory)
for root, dirs, files in os.walk(abs_directory):
for file in files:
if file.lower().endswith('.doc') and not file.startswith('~$'): # 排除临时文件
doc_path = os.path.join(root, file)
docx_path = os.path.splitext(doc_path)[0] + '.docx'
# 如果目标.docx文件已存在则跳过
if not os.path.exists(docx_path):
convert_doc_to_docx(doc_path, docx_path)
else:
print(f"目标文件已存在,跳过: {docx_path}")
except Exception as e:
print(f"处理目录时出错: {directory}, 错误: {str(e)}")
if __name__ == '__main__':
# 设置要处理的目录
target_directory = '.'
# 开始处理
print("开始转换.doc文件...")
process_directory(target_directory)
print("所有.doc文件转换完成!")
批量将 doc 转换为 docx 文件
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 转自:https://skday.com/archives/418/ 记事本新建文件,保存为vbs格式 文件内容为...
- 接着之前讨论过的问题,还是doc、docx、txt文件的格式转换。 首先,我们先研究一下doc和docx之间的转换...
- 在文档批量合并那篇里面提到了不同格式文档批量合并有两种方法,第一种方法在那篇里面,第二种方法在这里。 第二种方法是...
- 写在前面 绝大多数生物信息学分析软件只接受制表符(即键盘上的 Tab)分隔的文本文件。而日常表格处理时,我们常常会...
- 本文介绍如何将 Markdown 文件转换为纯文本文件。Markdown 是一种轻量级的标记语言,用于编写格式简单...