用python实现批量替换.doc文件文件内容

Posted vulcat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python实现批量替换.doc文件文件内容相关的知识,希望对你有一定的参考价值。

整个功能实现最重要的模块是docx这个模块

安装语句

pip install python-docx

docx模块只能操作.docx文件,所以在这之前我们要将.doc文件转换成.docx。.doc文件是不能直接转换成.docx文件的,如果直接改后缀名会引起文件打不开或者乱码问题。

所以我们需要将文件另存为.docx格式。

import sys
import pickle
import re
import codecs
import string
import shutil
from win32com import client as wc
import docx
import os
 
path = "C:\Users"#需修改文件所在文件夹
files = []#需修改文件列表
#读取文件夹中文件列表
for file1 in os.listdir(path):
    if file1.endswith(".doc"):
        files.append(file1)
 
def doSaveAas(files):
    word = wc.Dispatch(‘Word.Application‘)
    for docname in files:
        temp=‘C:\Users\{}‘.format(docname) 
        doc = word.Documents.Open(temp)        # 目标路径下的文件
        new_world = docname + "x"
        doc.SaveAs(u‘C:\Users\{}‘.format(new_world), 12, False, "", True, "", False, False, False, False)  # 转化后路径下的文件    
        doc.Close()
    word.Quit()

doSaveAas(files)

转化为docx文件后我们要来实现将指定目标替换的功能了,我需要实现的功能是将文件表格里的日期进行替换

import os
import docx

#读取需要操作的文件的列表
path = "C:\Users"
files = []#生成的文件队列
for file1 in os.listdir(path):
    if file1.endswith(".docx"):
        files.append(path+"\"+file1)

#替换词
def exchange(docname,old_word,new_word):#old_word是将要被替换的词,new_word是替换词
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                cell.text = cell.text.replace(old_word,new_word)

for file2 in files: 
    doc = docx.Document(file2)        
    exchange(file2,"old_word","new_word")
    doc.save(file2)
    print("{}替换完成".format(file2))

这段代码仅能替换docx文件表格里的内容,不能替换正文内容

以上是关于用python实现批量替换.doc文件文件内容的主要内容,如果未能解决你的问题,请参考以下文章

用excel中的VBA,然后根据excel中单元格中内容,批量替换一个word的模板doc中的字符。字符有很多处。

使用脚本批量替换文本内容

Python脚本批量给文件添加内容

批量替换文件夹多个doc中的字符串

AS3批量替换文件

如何用Python实现doc文件批量转换为docx