需求
需要处理的文件:test为第一层,0a5593bc-7377-4328-9787-1068214f5b4f等为第二层,xml文件为第三层
处理后的结果:result为新的路径,存储所有第三层的xml文件
代码
import os
import shutil
import re
# 获取指定文件中文件名
def get_filename(filetype):
name = []
final_name_list = [] # 存放最终move的相对路径
wai_file_name_list = [] # 存储xml文件外层的文件名
source_dir = old_path # 第一层文件
for root, dirs, files in os.walk(source_dir):
wai_file_name_list = wai_file_name_list + dirs
for i in files: # 第二层文件(即xml的外层文件)
if filetype in i: # 第三层文件(xml文件所在的层)
name.append(i.replace(filetype, '')) # 找出xml文件,获取其文件名
xml_file_name_list = [item + filetype for item in name] # 存储每一个第二层文件内的xml文件名
for k in range(len(wai_file_name_list)):
name_list = wai_file_name_list[k] + '/' + xml_file_name_list[k] # 将第二层文件名和xml文件名合并,得到相对路径
final_name_list.append(name_list)
return final_name_list # 返回由“第二层文件名/xml文件名”组成的列表
# 复制指定文件到另一个文件夹里
def cope_file(old_file_name, old_path, new_file_name, new_path):
shutil.copyfile(os.path.join(old_path, old_file_name),
os.path.join(new_path, new_file_name)) # 路径拼接要用os.path.join,复制指定文件到另一个文件夹里
return old_file_name
# 主函数
file_type = '.xml' # 指定文件类型
old_path = 'F:\gdc\\test' # 原文件夹路径
new_path = 'F:\gdc\\result' # 新文件夹路径
def main_function(filetype, old_path, new_path):
final_name_list = get_filename(filetype)
for old_name in final_name_list:
new_name = old_name.split('/')
new_name = new_name[1] # 只复制xml文件,new_name只需要xml文件名
cope_file(old_name, old_path, new_name, new_path)
return final_name_list
main_function(file_type, old_path, new_path) # 主函数
print("完成")