Python结合文件名称将多个文件复制到不同路径下
本文介绍基于Python语言,针对一个文件夹下的大量栅格遥感影像文件,基于其各自的文件名,分别创建指定名称的新文件夹,并将对应的栅格遥感影像文件复制到不同的新文件夹下的方法。
首先,我们来看一下本文需要实现的需求。现有一个文件夹,其中有大量.tif格式的栅格遥感影像文件,以及.xml、ovr等格式的遥感影像辅助信息文件,如下图所示。

其中,如上图中紫色框所示,每一景遥感影像文件的文件名称中,都有一个表示其编号的字段;我们希望基于这一编号字段,将带有相同编号字段的栅格遥感影像文件,以及其对应的辅助信息文件,都复制到一个结果文件夹中;这个结果文件夹如下图所示。

其中,结果文件夹内含有多个不同编号的子文件夹,这个编号就是上上图中,栅格遥感影像所带有的编号。例如,我们希望将所有文件名称中带有15字段的栅格遥感影像文件及其辅助信息文件,都复制到结果文件夹中名称为15的子文件夹中,以此类推。
知道了具体需求,我们即可开始代码的撰写。本文所用到的代码如下所示。
# -*- coding: utf-8 -*-
"""
Created on Mon Feb 13 20:25:04 2023
@author: fkxxgis
"""
import os
import re
import shutil
tif_file_path = r"E:\02_Project\01_Chlorophyll\Fishnet\Result"
result_file_path = r"E:\02_Project\01_Chlorophyll\Fishnet\ResultFolder"
file_list = os.listdir(tif_file_path)
for file in file_list:
file_id_suffix = file.split("_")[2]
file_id = re.findall("\d+", file_id_suffix)[0]
if not os.path.exists(os.path.join(result_file_path, file_id)):
os.makedirs(os.path.join(result_file_path, file_id))
print("Make " + file_id + " path.")
shutil.copy(os.path.join(tif_file_path, file), os.path.join(result_file_path, file_id, file))
其中,tif_file_path是存储有原有待复制遥感影像文件的文件夹,result_file_path则表示最终的结果文件夹。
代码的整体思路也非常简单。首先,我们需要导入os、re与shutil等3个Python库,分别实现系统文件遍历、字符串匹配与遥感影像文件的复制。其次,我们通过os.listdir()函数,遍历待复制遥感影像文件对应的文件夹,获取其中的每一个文件;这里的文件既包括.tif格式的栅格遥感影像文件,同时也包括.xml、ovr等格式的遥感影像辅助信息文件。
随后,对每一个文件加以处理。我们基于每一个文件的文件名称的规则,通过split()函数,将其中表示编号的字段以及这一字段之后的内容提取出来;紧接着,基于re.findall()函数,通过字符串匹配的方式,将表示编号的字段(也就是文件名称中的数字部分)提取出来。
接下来,知道了当前文件对应的编号,我们就可以开始复制工作。但是这里需要注意,由于我们需要将每一个文件都放入结果文件夹中的子文件夹,因此需要首先判断当前子文件夹有没有被建立;如果没有创建的话,我们需要创建一下这个子文件夹。这一步骤通过if判断语句及其内部的代码即可实现——通过os.path.exists()函数判断是否存在指定的子文件夹,如果不存在的话就新建这一子文件夹。
随后,就可以开始文件的复制工作了。这一步骤我们通过shutil.copy()函数即可实现。
运行上述代码后,我们即可在结果文件夹中看到各个编号对应的子文件夹,并在子文件夹中看到这一编号对应的全部文件。如下图所示,可以看到结果文件夹中,名称为15的子文件夹内,包含的就是文件名称中带有15字段的所有遥感影像文件及其对应的辅助信息文件。

至此,大功告成。
Python结合文件名称将多个文件复制到不同路径下的更多相关文章
- Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode
Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...
- C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名
1.实现把指定文件夹下的所有文件复制到指定路径下 public static void copyFiles(string path) { DirectoryInfo dir = new Directo ...
- ubuntu中获取文件名称并生成txt文件
简介: 在机器视觉学习过程中,通常会经常批量处理一些图片,在Ubuntu下可以使用find命令,来实现将文件名全部读取出来,生成列表txt文件,作为标签使用 (1)find命令格式如下: find / ...
- 【java】【File】用File相关类写一个小工具,完成从指定目录下抽取指定文件并复制到新路径下完成重命名的功能
今日份代码: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.io.*; i ...
- linux和windows文件名称长度限制
Linux文件名称的长度限制是255个字符 windows下全然限定文件名称必须少于260个字符,文件夹名必须小于248个字符. linux下文件数.文件夹数.文件名称长度的各种限制 下面測试都是在没 ...
- Java递归读取文件路径下所有文件名称并保存为Txt文档
本文用递归的方法实现读取一个路径下面的所有文件并将文件名称保存到Txt文件中,亲测可用. 递归读取文件路径下的所有文件: /** * 递归读取文件路径下的所有文件 * * @param path * ...
- CKEditor与CKFinder学习--CKFinder源代码改动自己定义上传文件名称
CKFinder的系列文章到眼下应该说基本能够满足开发需求了,只是另一个小细节,CKFinder默认上传的文件名称和源文件名称一致,假设文件名称反复会自己主动加入编号"(1)"&q ...
- 使用python内置模块os和openpyxl搜索指定文件夹下Excel中的内容
在指定路径下,搜索Excel文件中包含的指定内容,首先需要遍历指定路径,得到该路径下所有Excel文件的绝对/相对路径:然后读取Excel中内容,将文件中的每个单元格的值与要搜索的内容进行判断(正则比 ...
- Python-对比参考目录查找多个文件夹中不同的文件
改完文件名称后,Dr.he 发现分别保存5个状态的jpg 文件的文件夹出现缺少文件的情况.为了让他少熬夜查找缺失文件,结合网友分享的脚本,写了查找以下代码,满足他的需求,也以防自己忘记.以下代码能解决 ...
- 使用PHP实现文件上传和多文件上传
PHP 2013 年 9 月 4 日 暂无评论 在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一.值得高兴的是,在PHP中实现文件上传功能要比在Java.C#等语言 ...
随机推荐
- FPGA技术脚本使用
做fpga 不会脚本,基本跟残废一个概念.以前我觉得做FPGA应该学习什么人工智能,大数据,机器人.现在想起来真是傻逼,做fpga也好,做ic,做逻辑其实基本能力都是一样的. 一个学习tcl脚本,pe ...
- 《Effective C#》系列之(一)——异常处理与资源管理
请注意,<Effective C#>中的异常处理与资源管理部分实际上是第四章的内容.以下是关于该章节的详细解释. 第四章:异常处理与资源管理 一. 了解异常处理机制 异常处理机制使程序员能 ...
- C#S7.NET实现西门子PLCDB块数据采集的完整步骤
前言 本文介绍了如何使用S7.NET库实现对西门子PLC DB块数据的读写,记录了使用计算机仿真,模拟PLC,自至完成测试的详细流程,并重点介绍了在这个过程中的易错点,供参考. 用到的软件: 1.Wi ...
- 工商银行分布式服务 C10K 场景解决方案
简介: Dubbo 是一款轻量级的开源 Java 服务框架,是众多企业在建设分布式服务架构时的首选.中国工商银行自 2014 年开始探索分布式架构转型工作,基于开源 Dubbo 自主研发了分布式服务平 ...
- “2021ISIG中国产业智能大会低代码峰会”即将开幕,钉钉宜搭叶周全受邀出席
简介:2021年12月8-9日,"2021ISIG中国产业智能大会" 将在上海举行.阿里巴巴资深技术专家,钉钉宜搭创始人叶周全将作为特邀嘉宾出席大会. 2021年12月8-9日, ...
- 庖丁解牛|图解 MySQL 8.0 优化器查询转换篇
简介: 本篇介绍子查询.分析表和JOIN的复杂转换过程 一 背景和架构 在<庖丁解牛-图解MySQL 8.0优化器查询解析篇>一文中我们重点介绍了MySQL最新版本8.0.25关于SQ ...
- 如何开发 Node.js Native Add-on?
简介: 来一起为 Node.js 的 add-on 生态做贡献吧~ 作者 | 吴成忠(昭朗) 这篇文章是由 Chengzhong Wu (@legendecas),Gabriel Schulhof ( ...
- dotnet 启动进程传入不存在的文件夹作为工作目录行为变更
本文记录在 dotnet 下,启动进程,传入不存在的文件夹作为进程的工作目录,分别在 .NET Framework 和 .NET Core 的行为 在 dotnet 6 下,可以使用 ProcessS ...
- MySQL—MySQL的存储引擎之InnoDB
MySQL-MySQL的存储引擎之InnoDB 存储引擎及种类 存储引擎 说明 MyISAM 高速引擎,拥有较高的插入,查询速度,但不支持事务 InnoDB 5.5版本后MySQL的默认数据库存储引擎 ...
- FPGA最大工作频率教程
FPGA最大工作频率教程 1. Quartus的时序分析 作为编译过程的一部分,Quartus对布局布线的电路做时序分析.在编译报告里,展开"Timing Analyzer",这 ...