python ---- 根据文件名称中的数字排序

news2024/10/7 19:28:01

1. 需求分析

  1. 获取文件夹中的所有文件名称;
  2. 筛选所有文件名称中的图片文件;
  3. 获取图片文件名称中的数字;
  4. 对数字排序;
  5. 返回排序后的图片文件名称列表。

2. 获取所有图片文件名称

2.1 代码实现分析

  1. 使用 os.listdir 获取文件夹下的所有文件名称;
  2. 使用 for in 依次获取列表中的文件名称;
  3. 获取文件名称的后缀;
  4. 判断该文件是否是图片文件;
  5. 是图片文件就将文件名称放入图片名称列表;
  6. 返回汇总后的图片名称列表。

2.2 代码实现

import os

# 获取文件夹中的所有图片文件
def get_all_image_name(path):
  names = os.listdir(path)
  images = []
  for name in names:
    suffix = name.split('.').pop()
    if suffix in ['jpg', 'png', 'jpeg', 'bmp']:
      images.append(name)
  return images

if __name__ == "__main__":
  image_names = get_all_image_name('./images')
  print('image_names:',image_names)

2.3 输出结果

输入图片说明

3. 获取排序后的文件名称列表

3.1 获取文件名称中的数字

import os
import re

# 获取文件夹中的所有图片文件
def get_all_image_name(path):
  names = os.listdir(path)
  images = []
  for name in names:
    suffix = name.split('.').pop()
    if suffix in ['jpg', 'png', 'jpeg', 'bmp']:
      images.append(name)
  return images

# 获取排序后的文件名称
def sort_names(names):
  for name in names:
    print(int(re.sub('\D', '', name)))

if __name__ == "__main__":
  image_names = get_all_image_name('./images')
  print('image_names:',image_names)
  sort_names(image_names)

3.2 输出结果

输入图片说明

3.3 多次循环实现名称排序

import os
import re

# 获取文件夹中的所有图片文件
def get_all_image_name(path):
  names = os.listdir(path)
  images = []
  for name in names:
    suffix = name.split('.').pop()
    if suffix in ['jpg', 'png', 'jpeg', 'bmp']:
      images.append(name)
  return images

# 获取排序后的文件名称
def sort_names(names):
  nums = []
  for name in names:
    nums.append(int(re.sub('\D', '', name)))
  # 排序
  nums.sort()
  last_names = []
  for num in nums:
    for name in names:
      if num == int(re.sub('\D', '', name)):
        last_names.append(name)
  return last_names


if __name__ == "__main__":
  image_names = get_all_image_name('./images')
  print('image_names:',image_names)
  sort_images = sort_names(image_names)
  print('sort_images:',sort_images)

3.4 输出结果

输入图片说明

3.5 使用 sorted 配合 lambda 实现

import os
import re

# 获取文件夹中的所有图片文件
def get_all_image_name(path):
  names = os.listdir(path)
  images = []
  for name in names:
    suffix = name.split('.').pop()
    if suffix in ['jpg', 'png', 'jpeg', 'bmp']:
      images.append(name)
  return images

# 获取排序后的文件名称
def sort_names(names):
  last_names = list(sorted(names, key=lambda x:(int(re.sub('\D', '', x)),x)))
  return last_names


if __name__ == "__main__":
  image_names = get_all_image_name('./images')
  print('image_names:',image_names)
  sort_images = sort_names(image_names)
  print('sort_images:',sort_images)

3.6 输出结果

输入图片说明

4. 注意

  1. 使用 os 模块获取所有的文件名称;
  2. 使用 re 获取文件名称中的数字;
  3. 使用 sorted 对文件名称排序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

keil_arm满减栈应用场景

.text .global _start _start:满减压栈使用场景ldr sp,0x40000800mov r0,#0x1mov r1,#0x2bl add1_funcadd r0,r0,r1 r0 r0 r1 0x3b stopadd1_func: 压栈保存现场 r0 0x1 r1 0x2stmfd sp!,{r0,r1,lr}mov r0,#0x3mov r1,#0x4bl add2_funcadd r0,r0,r1 r0 r…

如何在Windows中批量创建多个文件夹

你需要更好地组织你的文件和文档吗?如果你在笔记本电脑或台式机上将相关文件分组到不同的文件夹中,那么总是很容易找到你需要的东西。你还可以更改图标的大小,使其在视觉上更美观。 在 Windows 中创建一个文件夹的传统做法是:右键…

【GlobalMapper精品教程】060:用dem提取一条线的高程值

本实验使用的数据有线路数据(line.shp)和数字地形数据(dem.tif),提取线数据的高程值。 文章目录 一、加载实验数据二、生成路径剖面三、导出线路高程四、注意事项【参考阅读】:【ArcGIS微课1000例】0004:值提取至点(Extract value to point) 一、加载实验数据 本实验…

NLP学习笔记(三)

一:分类方法 (一)逻辑回归 最简单的方法就是将分类问题视为回归问题,采用逻辑回归计算分类的边界。 (二)softmax回归 softmax的前向传播过程可以分为以下三步: h W T x y ^ s o f t m a …

springboot基于keytool实现https的双向认证

一、环境准备 服务器信息如下: 操作系统说明server-one服务器1server-two服务器2 二、keytool命令解释 -genkey 表示要创建一个新的密钥。 -alias 表示 keystore 的别名。 -keyalg 表示使用的加密算法是 RSA ,一种非对称加密算法。 -keysize 表示密…

ubuntu 基础软件

文章目录 一.通过.deb 安装的软件1.谷歌浏览器2.utools3.wps4.VScode5.typora6.搜狗输入法的安装 二.通过命令行安装的软件1.截图工具2.超级终端3.安装 git4.安装net-tools5.安装tree 三.ubuntu的基础设置1.更改软件安装源头2.修改计算机名称 一.通过.deb 安装的软件 下面 .deb…

SpringBoot-集成FTP(上传、下载、删除)

目录 一、引入依赖 二、配置文件 三、Controller层 四、Service层 五、相关工具类 由于服务在内网部署&#xff0c;需要使用ftp服务器管理文件&#xff0c;总结如下 一、引入依赖 <!-- https://mvnrepository.com/artifact/commons-net/commons-net --> <depen…

基于XDMA 中断模式的 PCIE 上位机与FPGA数据交互架构 提供工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案图像产生、发送、缓存数据处理XDMA简介XDMA中断模式图像读取、输出、显示QT上位机及其源码 5、vivado工程详解6、上板调试验证7、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&#…

SAP从入门到放弃系列之可用性检查-订单物料可用性检查-Part2

文章目录 一、概述二、物料可用性检查如何锁定库存2.1实现思路2.2系统设置关键点 三、系统测试数据3.1、勾选含预留选项的测试效果3.2、含相关预留3.2.1含相关预留-排除3.2.2含相关预留-仅可领料3.2.3含相关预留-全部 四、最后总结&#xff1a; 一、概述 物料可用性检查最终的…

【Linux】shell中快速遍历所有文件下匹配的内容

目录 1.举例 2.find命令 2.1. find命令作用 2.2. find命令选项基本格式 2.3. 常用选项 2.4. 常用动作 2.5. 根据文件名进行匹配 2.5.2 在/home目录下查找以.txt结尾的文件名 2.5.3 同上&#xff0c;但忽略大小写 2.5.4 查找 /home/ 下所有以.txt或.pdf结尾的文件…

五、卷积神经网络

文章目录 前言一、图像卷积1.1 不变性1.2 互相关运算1.3 卷积层1.4 互相关和卷积1.5 特征映射和感受野 二、填充和步幅2.1 填充2.2 步幅 三、多输入多输出通道3.1 多输入通道3.2 多输出通道3.3 11卷积层 四、汇聚层/池化层4.1 最大汇聚层与平均汇聚层4.2 填充和步幅4.3 多个通道…

Linux下安装/使用mariadb

文章目录 第一章&#xff1a;mariadb在rhel7上的使用第二章&#xff1a;mariadb在rhel6上的安装&#xff08;1&#xff09;编译源码包&#xff08;比较慢&#xff09;&#xff08;2&#xff09;二进制包安装&#xff08;比较推荐&#xff09; 第一章&#xff1a;mariadb在rhel7…

【Android】Android虚拟机

虚拟机 Android的虚拟机主要有两种&#xff1a;Dalvik 虚拟机和 ART&#xff08;Android Runtime&#xff09;虚拟机。 Dalvik 虚拟机 Dalvik 虚拟机是 Android 早期使用的虚拟机&#xff0c;它基于寄存器架构。从Android 2.2版本开始&#xff0c;支持JIT即时编译&#xff08…

计算机系统 基础知识点汇总,超全!!!

计算基础知识点合集来啦&#xff01;&#xff01;&#xff01; 更多知识请关注我&#xff01;&#xff01;&#xff01; 近期内容&#xff1a; 第二章 数据结构与算法 知识点总结第三章 程序设计基础知识点整理第四章 软件工程基础知识点汇总第五章 数据库基础知识pyhon基础知…

JVM 调优设置

堆大小设置 JVM 中最大堆大小有三方面限制&#xff1a;相关操作系统的数据模型&#xff08;32-bt还是64-bit&#xff09;限制&#xff1b;系统的可用虚拟内存限制&#xff1b;系统的可用物理内存限制。32位系统下&#xff0c;一般限制在1.5G~2G&#xff1b;64为操作系统对内存无…

Python web框架开发 - WSGI协议

目录 浏览器请求动态页面过程 多进程web服务端代码 - 面向过程 封装对象分析 增加识别动态资源请求的功能 为什么需要 WSGI协议 WSGI协议的介绍 定义WSGI接口 编写framwork支持WSGI协议&#xff0c;实现浏览器显示 hello world 本次开发的完整代码如下&#xff1a; 浏…

深度学习 / 数据处理:如何处理偏态数据

1 前言 当我们使用一个线性回归模型时&#xff0c;通常这个模型是在很大假设的前提下才有一个很好的结果&#xff1a; 1、假设预测因子和预测目标之间的关系是线性的2、数据不存在外在噪声&#xff1a;不存在一些极端的数据3、非共线性&#xff08; collinearity&#xff09;…

1分钟学会使用docker-compose部署 registry 以及可视化镜像

获取 docker-compose: curl -L https://github.com/docker/compose/releases/download/2.2.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose docekr-compose.yaml: version: 3.3services:registry-ui:image: joxit/docker-registry-ui:mainrestart: always…

appium如何连接多台设备

目录 前言&#xff1a; 1.我们拿两台设备来模拟操作下&#xff0c;使用&#xff1a;adb devices查看连接状况&#xff0c;获取到设备名称。 2.获取需要操作app的包名和页面名称&#xff08;前提该设备已经打开了app&#xff09; 3.设置初始配置信息 4.打开页面后操作元素&am…

嵌入式系统的不同方向及优化策略

当涉及到嵌入式系统开发时&#xff0c;可以根据具体的应用需求选择不同的方向进行优化。以下是一些常见的嵌入式系统方向及其特点&#xff1a; 单片机方向&#xff1a;这个方向主要针对使用单片机作为核心的嵌入式系统开发。单片机资源有限&#xff0c;适用于简单的控制任务&am…