0
点赞
收藏
分享

微信扫一扫

python | 从指定文件夹中筛选出xml文件,复制到新的指定路径

哈哈镜6567 2022-04-18 阅读 52

需求

需要处理的文件: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("完成")

举报

相关推荐

C# 复制文件到指定文件夹

0 条评论