利用Pyhton实现多路径文件批量拷贝

本文介绍了如何使用Python的shutil和copyfile模块,将按分类和城市分组的数据文件批量复制到对应城市命名的文件夹中。针对源数据中的通用文件和按城市区分的文件,脚本能实现智能拷贝,达到统一整理的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:将源数据中分类别分城市存放的数据文件,拷贝到一个以城市命名的文件夹中。

即殊途同归拷贝。

 

源数据:

如下图,源数据包含3种分类的文件夹。

其中01中的数据不分城市,所有城市通用。

02与03中数据分城市存放,且结构相同,后续截图以保定为例。

成果:

分城市的成果数据包,以保定为例:

小脚本:

#-*- coding: utf-8 -*-

import os
import shutil
#from City_Dictionary import city_names

city_names =['三亚', '上海', '东莞', '中山', '乌鲁木齐', '佛山', '保定', '兰州', '北京', '南京', '南宁',
'南昌', '南通', '厦门', '台州', '合肥', '呼和浩特', '哈尔滨', '唐山', '大连', '天津', '太原', '宁波',
'常州', '广州', '徐州', '惠州', '成都', '扬州', '无锡', '昆明', '杭州', '柳州', '武汉', '沈阳', '泉州',
'济南', '海口','深圳', '温州', '潍坊', '烟台', '珠海', '盐城', '石家庄', '福州', '秦皇岛', '绍兴', '芜湖',
'苏州', '西宁', '西安', '贵阳', '郑州', '重庆', '金华', '银川', '长春', '长沙', '青岛']


#RD_LINK、RD_NODE所有后缀的文件存入列表
link_node_LIST = []
file_type = ['.dbf','.prj','.sbn','.sbx','.shp','.shx']
for type in file_type:
    copy_file_LINK = 'RD_LINK' + type
    link_node_LIST.append(copy_file_LINK)
    copy_file_NODE = 'RD_NODE' + type
    link_node_LIST.append(copy_file_NODE)
        


for city_chinese in city_names:
    #输入
    #01警示信息路径
    copyfrom_dir_WARNIN = 'D:/PythonCode_inWork/02打断数据包自动生成/EX2_DATA/copyfrom/01WARNING/'
    #02打断前link&node
    copyfrom_dir = 'D:/PythonCode_inWork/02打断数据包自动生成/EX2_DATA/copyfrom/02ROAD/'+city_chinese+'/'
    #03打断后link&node
    copyfrom_dir_EX2 = 'D:/PythonCode_inWork/02打断数据包自动生成/EX2_DATA/copyfrom/03ROAD_EX/'+city_chinese+'/'


    #输出:成果打断包路径
    copyto_dir = 'D:/PythonCode_inWork/02打断数据包自动生成/EX2_DATA/copyto/19Q1/'+city_chinese+'/'

    #遍历拷贝警示信息文件——不用改名
    warning_files = os.listdir(copyfrom_dir_WARNIN)
    for warning in warning_files:
        #路径+文件名
        old_filename_WARNING = copyfrom_dir_WARNIN + warning
        new_filename_WARNING = copyto_dir + warning
        shutil.copyfile(old_filename_WARNING,new_filename_WARNING)
        #print(city_chinese+'警示信息拷贝完成!')
    print(city_chinese+'全部警示信息拷贝完成!')#一个城市的全部警示信息拷贝完才打印

    #遍历拷贝RD_LINK、RD_NODE文件——并改名为相应打断前、后
    for link_node_file in link_node_LIST:
    #——————————————LINK/NODE源数据————————————————————————
        #打断前
        old_filename = copyfrom_dir + link_node_file
        #打断后
        old_filename_EX2 = copyfrom_dir_EX2 + link_node_file

        #——————————————LINK/NODE打断包数据————————————————————
        #打断前
        new_filename = copyto_dir + link_node_file[0:2] + '打断前' + link_node_file[-9:]
        #打断后
        new_filename_EX2 = copyto_dir + link_node_file[0:2] + '打断后' + link_node_file[-9:]
        

        #——————————————拷贝处理———————————————————————————————
        #打断前
        shutil.copyfile(old_filename,new_filename)        
        #打断后
        shutil.copyfile(old_filename_EX2,new_filename_EX2)
        
        #print(city_chinese + 'LINK、NODE拷贝完成')
    print(city_chinese +'全部LINK、NODE拷贝完成')
    
print('打断数据包已全部生成!')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值