Python如何批量合并70个doc和docx文件

目录

一、问题的提出

二、算法分析

三、代码展示

四、注意事项


有一位朋友发来70多个数名命名的doc和docx文件,问我有没有vba代码,可以把这些文件按照数字大小的顺序合并。我试着用了chatgpt,搞了一串vba代码行不通,于时我就找出了Python,尝试了一下还不错。Python如何批量合并70个doc和docx文件_第1张图片合并doc,docx文件

二、算法分析

在实现转换前,需要进行文件遍历、格式转化,最终合并到新的文件中。以下是算法步骤

  1. 遍历当前目录文件。 利用os.listdir()来遍历。
  2. 格式转化。用changeOffice这个模块来实现doc和docx的格式批量转化。
  3. 合并docx。用python-docx中的Document来读取,追加到前面的文件。

三、代码展示

经过测式,我编制出以下代码:

from docx import Document
from changeOffice import Change
import os,time
Change(".").doc2docx() #把当前目录下的doc批量转化为docx
time.sleep(3) #设置停顿时间,以防出错
files = sorted([file for file in os.listdir(".") if file.endswith(".docx")],key=lambda x:int(x[:-5])) #文件遍历和排序
doc1 = Document(files[0]) # 读取第一个文档
for file in files[1:]:
    doc = Document(file) # 读取第二个文档 
    for element in doc.element.body:  #拷贝文件中的信息,# 追加第二个文档内容到第一个文档末尾
        doc1.element.body.append(element)
doc1.save('merged_file.docx') # 保存新的合并文件

以上代码优点在于可以保证合并后文件的段落、字体等格式信息不变,而且转换的效率还挺高。大家可以测试一下,有问题随时反馈。

四、注意事项

  1. VBA和Python在办公自动化方面各有优势。Python最大的优势就是可以利用现成的模块,快速地实现想要的功能,不必从零开始,简化了编程过程,而且代码的运行速度快。
  2. 上面代码运行前要保证安装有Python环境,同时python-docx, changeOffice两个包也要用pip安装。程序运行时,所有的文件要保持关闭状态,代码文件要放在所有word文件的目录下。
  3. 这个程序仅适用于合并文件名是数字的word文件,因为这样的文件可以按照顺序合并,其它非数字文件名可以酌情修改代码。
  4. 程序运行前一定要备份原文件,因为changeOffice在进行文件格式转化后会默认删除原文件。

你可能感兴趣的:(python小项目,python,python,编程语言,办公自动化)