本文介绍基于Python语言,针对一个文件夹下的大量栅格遥感影像文件,基于其各自的文件名,分别创建指定名称的新文件夹,并将对应的栅格遥感影像文件复制到不同的新文件夹下的方法。

  首先,我们来看一下本文需要实现的需求。现有一个文件夹,其中有大量.tif格式的栅格遥感影像文件,以及.xmlovr等格式的遥感影像辅助信息文件,如下图所示。

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

  其中,结果文件夹内含有多个不同编号子文件夹,这个编号就是上上图中,栅格遥感影像所带有的编号。例如,我们希望将所有文件名称中带有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则表示最终的结果文件夹。

  代码的整体思路也非常简单。首先,我们需要导入osreshutil3Python库,分别实现系统文件遍历、字符串匹配与遥感影像文件的复制。其次,我们通过os.listdir()函数,遍历待复制遥感影像文件对应的文件夹,获取其中的每一个文件;这里的文件既包括.tif格式的栅格遥感影像文件,同时也包括.xmlovr等格式的遥感影像辅助信息文件

  随后,对每一个文件加以处理。我们基于每一个文件的文件名称的规则,通过split()函数,将其中表示编号的字段以及这一字段之后的内容提取出来;紧接着,基于re.findall()函数,通过字符串匹配的方式,将表示编号的字段(也就是文件名称中的数字部分)提取出来。

  接下来,知道了当前文件对应的编号,我们就可以开始复制工作。但是这里需要注意,由于我们需要将每一个文件都放入结果文件夹中的子文件夹,因此需要首先判断当前子文件夹有没有被建立;如果没有创建的话,我们需要创建一下这个子文件夹。这一步骤通过if判断语句及其内部的代码即可实现——通过os.path.exists()函数判断是否存在指定的子文件夹,如果不存在的话就新建这一子文件夹。

  随后,就可以开始文件的复制工作了。这一步骤我们通过shutil.copy()函数即可实现。

  运行上述代码后,我们即可在结果文件夹中看到各个编号对应的子文件夹,并在子文件夹中看到这一编号对应的全部文件。如下图所示,可以看到结果文件夹中,名称为15子文件夹内,包含的就是文件名称中带有15字段的所有遥感影像文件及其对应的辅助信息文件

  至此,大功告成。

Python结合文件名称将多个文件复制到不同路径下的更多相关文章

  1. Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode

    Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 不个网页title保存成个个文件的时候儿有无效字符的问题... 通常两个处理方式 ...

  2. C#实现把指定文件夹下的所有文件复制到指定路径下以及修改指定文件的后缀名

    1.实现把指定文件夹下的所有文件复制到指定路径下 public static void copyFiles(string path) { DirectoryInfo dir = new Directo ...

  3. ubuntu中获取文件名称并生成txt文件

    简介: 在机器视觉学习过程中,通常会经常批量处理一些图片,在Ubuntu下可以使用find命令,来实现将文件名全部读取出来,生成列表txt文件,作为标签使用 (1)find命令格式如下: find / ...

  4. 【java】【File】用File相关类写一个小工具,完成从指定目录下抽取指定文件并复制到新路径下完成重命名的功能

    今日份代码: import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import java.io.*; i ...

  5. linux和windows文件名称长度限制

    Linux文件名称的长度限制是255个字符 windows下全然限定文件名称必须少于260个字符,文件夹名必须小于248个字符. linux下文件数.文件夹数.文件名称长度的各种限制 下面測试都是在没 ...

  6. Java递归读取文件路径下所有文件名称并保存为Txt文档

    本文用递归的方法实现读取一个路径下面的所有文件并将文件名称保存到Txt文件中,亲测可用. 递归读取文件路径下的所有文件: /** * 递归读取文件路径下的所有文件 * * @param path * ...

  7. CKEditor与CKFinder学习--CKFinder源代码改动自己定义上传文件名称

    CKFinder的系列文章到眼下应该说基本能够满足开发需求了,只是另一个小细节,CKFinder默认上传的文件名称和源文件名称一致,假设文件名称反复会自己主动加入编号"(1)"&q ...

  8. 使用python内置模块os和openpyxl搜索指定文件夹下Excel中的内容

    在指定路径下,搜索Excel文件中包含的指定内容,首先需要遍历指定路径,得到该路径下所有Excel文件的绝对/相对路径:然后读取Excel中内容,将文件中的每个单元格的值与要搜索的内容进行判断(正则比 ...

  9. Python-对比参考目录查找多个文件夹中不同的文件

    改完文件名称后,Dr.he 发现分别保存5个状态的jpg 文件的文件夹出现缺少文件的情况.为了让他少熬夜查找缺失文件,结合网友分享的脚本,写了查找以下代码,满足他的需求,也以防自己忘记.以下代码能解决 ...

  10. 使用PHP实现文件上传和多文件上传

    PHP 2013 年 9 月 4 日 暂无评论 在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一.值得高兴的是,在PHP中实现文件上传功能要比在Java.C#等语言 ...

随机推荐

  1. 我用这10招,能减少了80%的BUG

    前言 对于大部分程序员来说,主要的工作时间是在开发和修复BUG. 有可能修改了一个BUG,会导致几个新BUG的产生,不断循环. 那么,有没有办法能够减少BUG,保证代码质量,提升工作效率? 答案是肯定 ...

  2. .NET Emit 入门教程:第六部分:IL 指令:9:详解 ILGenerator 指令方法:运算操作指令(指令篇结束)

    前言: 经过前面几篇的学习,我们了解到指令的大概分类,如: 参数加载指令,该加载指令以 Ld 开头,将参数加载到栈中,以便于后续执行操作命令. 参数存储指令,其指令以 St 开头,将栈中的数据,存储到 ...

  3. HarmonyOS NEXT应用开发案例—自定义日历选择器

    介绍 本示例介绍通过CustomDialogController类显示自定义日历选择器. 效果图预览 使用说明 加载完成后显示主界面,点当前日期后会弹出日历选择器,选择日期后会关闭弹窗,主页面日期会变 ...

  4. PolarDB-X 源码解读系列:DML 之 INSERT IGNORE 流程

    简介: 本文将进一步介绍 PolarDB-X 中 INSERT IGNORE 的执行流程,其根据插入的表是否有 GSI 也有所变化. 作者:潜璟 在上一篇源码阅读中,我们介绍了 INSERT 的执行流 ...

  5. Duang,您的钉钉应用已上线!云开发5分钟快速打造钉钉会议室预定系统

    简介: 5分钟可以干什么?喝一杯咖啡,回一封邮件,还是开发上线一个钉钉应用.云开发平台联合钉钉开发平台推出0门槛打造你的第一个钉钉应用的活动,完成相应任务后,即可领取精美奖品.春暖花开,领个背包去踏春 ...

  6. 重磅发布 阿里云数据中台全新产品DataTrust聚焦企业数据安全保障

    简介: DataTrust(隐私增强计算产品)是基于阿里云底层多项基础安全能力,经过阿里云数据中台丰富的客户业务实践,构建的一款为企业数据安全流通的产品. 随着包括零售.制造.金融等多行业数字化转型加 ...

  7. LlamaIndex 高层次概念

    本篇内容为您快速介绍在构建基于大型语言模型(LLM)的应用程序时会频繁遇到的一些核心概念. 增强检索生成(RAG) LLM 是基于海量数据训练而成,但并未涵盖您的具体数据.增强检索生成(Retriev ...

  8. [FAQ] golang-migrate/migrate error: default addr for network '127.0.0.1:3306' unknown

    按照项目github文档上所示,在使用 mysql 时你可能会这样写: $ migrate -path db/migrations -database mysql://root:123456@127. ...

  9. UNO 的 SamplesApp.Skia.Gtk 丢失字体文件抛出空异常

    在运行 UNO 的 SamplesApp.Skia.Gtk 例子程序时,如果没有拷贝字体文件夹,导致字体丢失,将会在运行的时候抛出 NullReferenceException 空异常 抛出的异常堆栈 ...

  10. WPF 使用 Skia 解析绘制 SVG 图片

    本文告诉大家如何在 WPF 里面,使用 Skia 解析绘制 SVG 图片.本文也适合控制台使用 SkiaSharp 解析绘制 SVG 图片,本文的 WPF 部分只是在 Skia 绘制完成之后,将 Sk ...