本文介绍基于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. 架构设计|基于 raft-listener 实现实时同步的主备集群

    背景以及需求 线上业务对数据库可用性可靠性要求较高,要求需要有双 AZ 的主备容灾机制. 主备集群要求数据和 schema 信息实时同步,数据同步平均时延要求在 1s 之内,p99 要求在 2s 之内 ...

  2. 顺通ERP:精细敏捷的设计理念,得到了消费者的喜爱

    顺通ERP是近年来备受关注的一款ERP品牌,其设计精细,操作便捷,备受消费者喜爱.那么,顺通ERP到底怎么样呢?属于什么档次呢? 首先,从品质上来看,顺通ERP具备高度的稳定性,能够确保企业的日常运营 ...

  3. 【笔记】go语言--结构体,方法,包与封装

    [笔记]go语言--结构体,方法,包与封装 结构体和方法 面向对象 go语言仅支持封装,不支持继承和多态 go语言没有class,只有struct //结构的定义 type TreeNode stru ...

  4. 力扣176(MySQL)-第二高的薪水(中等)

    题目: id 是这个表的主键.表的每一行包含员工的工资信息. 编写一个 SQL 查询,获取并返回 Employee 表中第二高的薪水 .如果不存在第二高的薪水,查询应该返回 null . 查询结果如下 ...

  5. 微信、企微小程序使用taro对位置权限进行处理

    1.功能 当用户未授权地理位置权限时,引导用户开启地理位置权限,区别于之前的uni处理,uni的处理 的处理没有手机系统关闭位置权限的处理,但是uni文章中对于打开位置权限后重新返回小程序有做权限重获 ...

  6. 飞桨PaddlePaddle的安装

    飞桨PaddlePaddle的安装 MacOS 下的 PIP 安装 一.环境准备 1.1 如何查看您的环境 可以使用以下命令查看本机的操作系统和位数信息: uname -m && ca ...

  7. 连续两年入选Gartner公共云容器,阿里云在边缘容器方面做了什么?

    最近,Gartner发布了2020年公共云容器报告,阿里云连续两年成为唯一入选的中国企业.报告显示,阿里云容器服务在中国市场表现强劲,产品形态丰富,在 Serverless 容器.服务网格.安全沙箱容 ...

  8. 函数计算 GB 镜像秒级启动:下一代软硬件架构协同优化揭秘

    ​简介:本文将介绍借助函数计算下一代 IaaS 底座神龙裸金属和安全容器,进一步降低绝对延迟且能够大幅降低冷启动频率. 作者:修踪 背景 函数计算在 2020 年 8 月创新地提供了容器镜像的函数部署 ...

  9. [Go] CORS 支持多个 origin 访问的思路 (Access-Control-Allow-Origin 部分)

    以下为局部伪代码,仅供参考: var allowOrigin string allowOrigins := config.AppConf.Get("middleware.cors.allow ...

  10. 小程序中使用 lottie 动画 | 踩坑经验分享

    最近被拉去支援紧急需求(赶在五一节假日前上线的,双休需要加班),参与到项目中才知道,开发的项目是微信小程序技术栈的.由于是临时支援,笔者也很久没开发过微信小程序了,所以挑选了相对独立,业务属性相对轻薄 ...