用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文件表格里的内容,不能替换正文内容