python脚本实现批量替换文件夹及多级子文件夹下的文件
以替换文件夹下的expected文件为新生成的result.txt文件为例(实际工作中遇到的,执行脚本用例后,需要将执行结果文件result.txt替换为新的预期结果文件expected.txt)
测试目录结构如下所示(多级目录下的文本文件也可以成功替换):
代码实现:
import os
from shutil import copy
path = input('请输入路径')#F:\test
path_list = []
dir_list = os.listdir(path)
for dir in dir_list:
full_path = os.path.join(path, dir) # dir=0000B
if os.path.isdir(full_path): # 获取输入路径下的子文件夹列表
path_list.append(full_path)
elif os.path.isfile(full_path): # 对路径下的expected.txt进行文本替换
if dir == 'result.txt':
dst = os.path.join(path, 'expected.txt')
copy(full_path, dst)
for path_item in path_list: # 获取所有文件夹及子文件夹的绝对路径传入到path_list列表中,path_list列表不断迭代,path_item也随path_list迭代不断迭代
dir_list_sub = os.listdir(path_item)#1111B
for dir_sub in dir_list_sub:
full_path_sub = os.path.join(path_item, dir_sub)
if os.path.isdir(full_path_sub):
path_list.append(full_path_sub)
for dir_path in path_list: # 对path_list中所有的文件夹及子文件夹路径下的expected.txt进行文本替换
file_list_sub = os.listdir(dir_path)
for file_sub in file_list_sub:
file_path = os.path.join(dir_path, file_sub)
if file_sub == 'result.txt':
dst = os.path.join(dir_path, 'expected.txt')
copy(file_path, dst)