背景:连续的拷贝world文件,结果都2023年了,还是把2022年的内容给拷贝了过来,现在文件夹下面又有那么多子文件夹,最好就是用 python 来找到文件夹下的所有文件然后依次目录拼接然后改名字了,话不多说,直接上代码了,这里面使用 docx 的 run 是为了修改文字以后,原来文件的格式不要变化,还是那句话,拼接具体的路径的时候注意 转义符 \ ,很恶心,没有的话,会显示找不到具体路径和文件的
import os
import platform
import datetime
from docx import Document # 没有包就是 pip install python-docx 进行安装
path = "D:\zhoushicheng\gongzuodiandi\电子税务局每日巡检——早上8点下午15点\\2023"
for root, dirs, names in os.walk(path):
for filename in names:
# print(os.path.join(root, filename)) # 路径和文件名连接构成完整路径
full_path_filename = os.path.join(root, filename)
doc = Document(full_path_filename)
for paragraph in doc.paragraphs:
tmp = ''
# 使用run防止world中修改了内容后保存文件格式变化
runs = paragraph.runs
for i, run in enumerate(runs):
tmp += run.text
if '2022年' in tmp:
# 如果存在匹配得字符串,那么将当前得run替换成合并后得字符串
run.text = run.text.replace(run.text, tmp)
run.text = run.text.replace('2022年', "2023年")
tmp = ''
docx_file_name = filename
# 具体到相关的路径下去修改和保存,这里拼接也是要用转义符来对付 \的
doc.save(root + '\\' + docx_file_name)
else:
# 如果没匹配到目标字符串则把当前run置空
run.text = run.text.replace(run.text, '')
if i == len(runs) - 1:
# 如果是当前段落一直没有符合规则得字符串直接将当前run替换为tmp
run.text = run.text.replace(run.text, tmp)