摘要:我们经常会遇到在不同的Word文件中的需要做相同的文字替换,若是一个一个文件操作,会花费大量时间。本节案例可以找出指定目录中的所有Word文件,并对每一个文件进行指定的文字替换操作。
我们经常会遇到在不同的 Word 文件中的需要做相同的文字替换,若是一个一个
文件操作,会花费大量时间 。 本节案例可以找出指定目录中的所有 Word 文件(包含
子目录),并对每一个文件进行指定的文字替换操作。
案例要求
把 replace 目录(包含子目录〉下所有 Word 文件中自甘“方法”都替换为“ method ”
下图中左图为 replaces ubReplacee lse.docx 文件替换后的结果,右图为在命令窗口中
显示的所有进行过替换操作的 Word 文件。
importos
from win32com importclient
from win32com.client importconstants
word = client.gencache.EnsureDispatch('Word.Application')
word.Visible =0
word.DisplayAlerts =0
runpath = "F:\pythonBase\pythonex\ch08\replace" #获取replace文件夹的路径
tree = os.walk(runpath) #取得目录树
print("所有 Word 文件:")
for dirname, subdir, files intree:
allfiles =[]
for file in files: #取得所有.docx .doc文件,存入allfiles列表中
ext = file.split(".")[-1] #取得文件名后缀
if((ext=="docx") or (ext=="doc")): #取得所有.docx .doc文件
allfiles.append(dirname + '\' + file) #加入allfiles列表
if(len(allfiles) > 0): #如果有符合条件的文件
for dfile inallfiles:
print(dfile)
doc = word.Documents.Open(dfile) #打开文件
word.Selection.Find.ClearFormatting()
word.Selection.Find.Replacement.ClearFormatting()
word.Selection.Find.Execute("方法",False,False,False,False,False,True,constants.wdFindContinue,False,"method",constants.wdReplaceAll)
doc.Close()
word.Quit()