利用Python按数字顺序批量修改文件名称

news2024/9/21 11:14:19

为了按顺序修改文件名称,采用对【文件名称列表】进行排序的方法。

要对列表进行排序,这里使用列表的sort()方法。这个方法会在不创建新的列表的情况下直接对列表进行排序。

逆序排列:sort(reverse=True)

files.sort()

结果还是不理想:

'1998.png', '1999.png', '2.png', '20.png', '200.png', '2000.png'

并非按照自然数的大小来排序。

推测原因是文件名称带有文件格式的后缀:.png

于是,使用os.path.splitext()函数获取每个文件名称的文件名部分,即去掉后缀的部分。

os.path.splitext()函数返回一个元组,第一个元素是文件名部分,第二个元素是文件后缀部分。

通过取第一个元素,即可获取去掉后缀的文件名部分。

# 获取每个文件名称的文件名部分
file_name_list = [os.path.splitext(file_name)[0] for file_name in files]
# 排序
file_name_list.sort()
print(file_name_list)

结果仍是出乎意料:

'1', '10', '100', '1000', '1001', '1002', '1003', '1004', '1005', '1006', '1007', '1008', '1009', '101', '1010', '1011', '1012'

观察输出结果,猜测是文件名称是字符串的缘故。

再把文件名称转为数字。

不用int()函数是因为有的文件名称是'259.1'这种形式。

会提示出错:ValueError: invalid literal for int() with base 10: '259.1'

即:这是一个错误信息,提示在将字符串’259.1’转换为整数时出现了错误,因为该字符串不是一个有效的十进制数字。

# 转为数字
file_name_list = [float(i) for i in file_name_list]
file_name_list.sort()
print(file_name_list)

换种方式:

def transform(i):
    """
    说明:字符串第一位小数是数字,将其转换为整数,否则将其转换为小数。
    """
    i = float(i)
    if i == int(i):
        i = int(i)
    else:
        i = float(i)
    return i


# 转为数字
file_name_list = [transform(i) for i in file_name_list]

# 排序
file_name_list.sort()

# 再转回字符串
file_name_list = [str(i) + '.png' for i in file_name_list]

print(file_name_list)

这就可以了。

修改文件名称:

# 修改文件名称
# enumerate()返回可迭代对象中的元素及其对应的索引值
for index, picture in enumerate(file_name_list):
    # 旧名称
    old = os.path.join(path, picture)
    # 新名称
    new = picture.replace(picture, '红楼梦' + str(index + 1) + '.png')
    # 加上路径
    new = os.path.join(path, new)
    # 开始修改文件名称
    os.rename(old, new)

print(len(file_name_list))
print('运行完毕')

在这里插入图片描述

全部代码如下:

import os

path = 'G:\漫画\红楼梦'
files = os.listdir(path)

# 获取每个文件名称的文件名部分
file_name_list = [os.path.splitext(file_name)[0] for file_name in files]


def transform(i):
    """
    说明:字符串第一位小数是数字,将其转换为整数,否则将其转换为小数。
    """
    i = float(i)
    if i == int(i):
        i = int(i)
    else:
        i = float(i)
    return i


# 转为数字
file_name_list = [transform(i) for i in file_name_list]

# 排序
file_name_list.sort()

# 再转回字符串
file_name_list = [str(i) + '.png' for i in file_name_list]

print(file_name_list)

# 修改文件名称
# enumerate()返回可迭代对象中的元素及其对应的索引值
for index, picture in enumerate(file_name_list):
    # 旧名称
    old = os.path.join(path, picture)
    # 新名称
    new = picture.replace(picture, '红楼梦' + str(index + 1) + '.png')
    # 加上路径
    new = os.path.join(path, new)
    # 开始修改文件名称
    os.rename(old, new)

print(len(file_name_list))
print('运行完毕')

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

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

相关文章

quarkus 搭建与基础开发环境配置总结

quarkus搭建与基础开发环境配置总结 大纲 基础概念quarkus2.13.7脚手架工程配置配置maven3.8.7quarkus快速启动quarkus的三种打包方式quarkus将程序打包为二进制文件window环境下quarkus云原生二进制文件打包环境搭建使用GraalVM-java11替换本地java8运行二进制文件 基础概念…

Linux操作系统学习(线程同步)

文章目录线程同步条件变量生产者与消费者模型信号量环形队列应用生产者消费者模型线程同步 ​ 现实生活中我们经常会遇到同一个资源多个人都想使用的问题,例如游乐园过山车排队,玩完的游客还想再玩,最好的办法就是玩完的游客想再玩就去重新排…

分享几种WordPress怎么实现相关文章功能

一淘模板(56admin.com)给大家介绍一下WordPress代码实现相关文章的几种方法,希望对大家有所帮助! WordPress很多插件可以实现相关文章的功能,插件的优点是配置简单,但是可能会对网站的速度造成一些小的影响…

做数据分析有前景吗?

当然有前景的。 每个行业都有发展前景,只是看你自身的技能情况或者关系人脉、软实力方面是否到位,不同的行业要求不一样。作为数据分析领域而言,属于IT行业,看的是你的专业技能;只要你技能过硬,就能在行业…

蓝桥杯 时间显示

题目 输入输出样例 示例 1 输入 46800999输出 13:00:00示例 2 输入 1618708103123输出 01:08:23评测用例规模与约定 对于所有评测用例,给定的时间为不超过 10^{18}1018 的正整数。 运行限制 最大运行时间:1s最大运行内存: 512M 基础知识 时间的转换…

Go底层原理:一起来唠唠GMP调度(一)

目录前言一、进程、线程、Goroutine1、进程与线程2、Goroutine二、Go调度器设计思想1、线程模型1.1 内核级线程模型1.2 用户级线程模型1.3 混合型线程模型2、 被废弃的 G-M 调度器2.1 了解 G-M 调度如何工作3、如今高效的 GMP 模型3.1 GMP模型调度流程3.2 GMP调度设计策略3.3 G…

【Vue3】封装数字框组件

数量选择组件-基本结构 &#xff08;1&#xff09;准备基本结构 <script lang"ts" setup name"Numbox"> // </script> <template><div class"numbox"><div class"label">数量</div><div cla…

C语言-基础了解-19-C位域

C位域 一、C位域 如果程序的结构中包含多个开关量&#xff0c;只有 TRUE/FALSE 变量&#xff0c;如下&#xff1a; struct {unsigned int widthValidated;unsigned int heightValidated; } status;这种结构需要 8 字节的内存空间&#xff0c;但在实际上&#xff0c;在每个变…

引领云数仓创新浪潮 HashData闪耀PostgreSQL中国技术大会

3月3日-3月5日&#xff0c;第12届PostgreSQL中国技术大会在杭州举行。本次大会以“突破•进化•共赢——安全可靠&#xff0c;共建与机遇”为主题&#xff0c;以线上线上结合的方式&#xff0c;邀请了PG领域众多行业大咖、学术精英及技术专家&#xff0c;共同探讨数据库未来的发…

【C/C++ 数据结构】-八大排序之 归并排序其它排序

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【C/C数据结构与算法】 分享&#xff1a;本王在此&#xff0c;狼狈为奸者&#xff0c;谋权篡位者&#xff0c;倒行逆施者&#xff0c;都得死&#xff01; ——岐王李茂贞《画江湖…

Linux 静态与动态编译、静态库与动态库

文章目录一、库的简介二、静态链接和动态链接1、静态链接2、动态链接3、GCC 下动态库与静态库三、静态库制作和使用四、动态库制作和使用总结一、库的简介 什么是库文件呢&#xff1f; 所谓库文件&#xff0c;大家可以将其等价为压缩包文件&#xff0c;该文件内部通常包含不止…

MyBatis源码分析(六)MetaObject工具类的使用与源码分析

文章目录一、MetaObject基本使用二、关键类源码分析1、MetaObject的构造方法2、PropertyTokenizer分词器3、BeanWrapper4、MetaClass5、DefaultReflectorFactory6、Reflector7、总结三、MetaObject的getValue源码分析写在后面一、MetaObject基本使用 public class User {priva…

OPT(奥普特)一键测量传感器SmartFlash高精度的四重保证

OPT&#xff08;奥普特&#xff09;一键测量传感器SmartFlash集成了机器视觉的边缘提取、自动匹配、自动对焦、自动学习及图像合成等人工智能技术&#xff0c;采用双远心光路及多角度照明系统设计&#xff0c;搭载高精度运动平台&#xff0c;并通过亚像素边缘提取算法处理图像&…

Mysql全解[中级篇]

目录存储引擎MySQL体系结构1). 连接层2). 服务层3). 引擎层4). 存储层存储引擎介绍存储引擎特点InnoDBMyISAMMemory文件区别及特点存储引擎选择索引无索引情况有索引情况特点索引结构二叉树红黑树B-TreeBTreeMySQL中优化之后的BTreeHash索引分类聚集索引&二级索引回表查询索…

双周赛99(贪心、数学、区间合并计算、换根DP)

文章目录双周赛99[6312. 最小和分割](https://leetcode.cn/problems/split-with-minimum-sum/)贪心[6311. 统计染色格子数](https://leetcode.cn/problems/count-total-number-of-colored-cells/)找规律[6313. 统计将重叠区间合并成组的方案数](https://leetcode.cn/problems/c…

规并排序(Swift版本)

Overview 概述 时间复杂度为 O(nlogn) ;适合大规模的数据排序 ;相比于冒泡排序、插入排序、选择排序这三种排序算法, 更加常用 ;用到了分治思想(即分而治之, 英文叫 “Divide and conquer”)&#xff0c;非常巧妙 ;英文名称: Merge Sort ; 分治思想, 在很多领域都有广泛的应用…

windows系统安装Linux虚拟机教程

虚拟机的安装首先要下载虚拟机的安装包&#xff0c;当前最新版本是VMware 16.2.1。软件我都已经给大家准备好了&#xff08;含序列号&#xff09;&#xff0c;大家在这里下载就好。虚拟机安装包下载完毕之后&#xff0c;将它安装到电脑里。这个安装过程很简单&#xff0c;一路下…

Linux操作系统学习(线程池)

文章目录线程池线程池原理代码示例单例模式饿汉模式懒汉模式饿汉懒汉对比其他的锁线程池 线程池原理 ​ 线程池是一种线程使用模式。在多线程应用中&#xff0c;若每有一个任务&#xff0c;线程就去调度相应的函数去创建&#xff0c;当任务过多时&#xff0c;每次都去调度且每…

CCF大数据专家委员会十周年纪念庆典纪实:拥抱数字时代,展望科技未来

山河远阔&#xff0c;奋进十年&#xff0c;作为国内大数据领域最权威的学术组织&#xff0c;CCF大数据专家委员会&#xff08;以下简称“大专委”&#xff09;不忘初心&#xff0c;凝心聚力&#xff0c;见证并推动了过去10年来大数据技术生态在中国的建立、发展和成熟。 2023年…

HBase安装

文章目录一、安装Zookeeper二、安装HBase三、启动Hbase步骤四、关闭进程顺序五、简单使用Hbase在开始安装HBase之前&#xff0c;请确保您已经安装了Java运行环境和Hadoop分布式文件系统。如果您还没有安装这些软件&#xff0c;请查看之前博文介绍安装。 HBase安装包&#xff1a…