【Python快速入门和实践014】Python常用脚本-批量重命名指定文件夹下文件名字

news2024/12/21 19:48:39

一、功能讲解

        这段代码是一个用于批量重命名文件的Python脚本。它的主要功能是在文件名前添加一定数量的前导零,使得所有文件名的长度保持一致。这对于管理大量文件,特别是当文件名需要按照特定顺序排列时非常有用。

  1. 导入必要的模块

    • os: 用于操作系统相关的功能,如读取目录等。
    • shutil: 提供高级操作,这里用于移动(重命名)文件。
  2. rename_images 函数

    • 参数
      • directory: 图片文件所在的目录。
      • prefix (默认为 "img"): 文件名的前缀。
      • total_length (默认为 5): 0的个数。
  3. 功能

    • 获取目录中的所有文件

      • 使用 os.listdir() 获取指定目录下的所有文件名。
    • 遍历文件

      • 对于每个文件,检查其是否为文件类型。
      • 获取文件的扩展名。
      • 如果文件是图片(这里指定了几种常见的图片扩展名),则执行重命名步骤。
    • 构建新的文件名

      • 使用 str().zfill() 方法来添加前导零,确保编号部分达到指定的长度。
      • 新文件名格式为 prefix_{编号}{扩展名}
      • 编号的位数取决于 total_length 参数,减去前缀长度和扩展名长度。
    • 重命名文件

      • 使用 shutil.move() 移动文件到同一目录下,实际上是重命名操作。
      • 打印出旧文件名和新文件名。
  4. 主程序 (if __name__ == "__main__":):

    • 设置要重命名的图片所在的目录。
    • 设置文件名的总长度。
    • 调用 rename_images 函数。

二、代码

import os
import shutil


def rename_images(directory, prefix="img", total_length=5):
    # 确保目录存在
    if not os.path.exists(directory):
        print(f"Directory '{directory}' does not exist.")
        return

    # 获取目录中的所有文件
    files = os.listdir(directory)

    # 记录已重命名的文件数量
    counter = 1

    for filename in files:
        # 检查是否为文件
        if os.path.isfile(os.path.join(directory, filename)):
            # 获取文件扩展名
            _, ext = os.path.splitext(filename)
            # print(_)
            print(ext)

            # 检查是否为图片文件(可以根据需要添加更多扩展名)
            if ext.lower() in ('.png', '.jpg', '.jpeg', '.gif', '.bmp'):
                # 构建新的文件名
                # 使用format方法来添加前导零
                new_filename = f"{prefix}_{str(counter).zfill(total_length+1)}{ext}"

                # 获取原始文件的完整路径
                old_filepath = os.path.join(directory, filename)

                # 获取新文件的完整路径
                new_filepath = os.path.join(directory, new_filename)

                # 重命名文件
                shutil.move(old_filepath, new_filepath)

                print(f"Renamed '{filename}' to '{new_filename}'")
                counter += 1
    print(f"一共成功命名了{counter-1}个文件。")

if __name__ == "__main__":
    # 指定图片所在的目录
    directory = "imgs"

    # 前导零长度
    total_length = 4

    # 定义自己的前缀
    prefix = '定义前缀'

    # 调用函数
    rename_images(directory, total_length=total_length, prefix=prefix)

执行结果:

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

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

相关文章

SiLM5932SHO系列SiLM5932SHOCG-DG 12A/12A强劲驱动电流能力 支持主动短路保护功能(ASC)单通道隔离门极驱动器

SiLM5932SHO系列是一款单通道隔离驱动器,提供12A源电流和12A灌电流。主动保护功能包括退饱和过流检测、UVLO、隔离故障报警和 4A 米勒钳位。输入侧电源的工作电压为3V至5.5V,输出侧电源的工作电压范围为13V至30V。所有电源电压引脚都有欠压锁定 (UVLO) 保…

golang基于WMI获取所有外接硬盘(USB,移动硬盘)信息

golang基于WMI获取所有外接硬盘(USB,移动硬盘)信息 package mainimport ("fmt""regexp""github.com/StackExchange/wmi""github.com/shirou/gopsutil/v3/disk" )// 定义 WMI 类结构体 type Win32_LogicalDiskToPartition struct {Ant…

Alleviating Hallucination in Multi-Modal Large Language Models

OPERA: Alleviating Hallucination in Multi-Modal Large Language Models via Over-Trust Penalty and Retrospection-Allocation 文章汇总 当前的问题发现 如图,在模型生成幻觉内容时,最后一层的 Self-Attention 权重大概率会在幻觉部分之前呈现出明…

【el-table】横向滚动条加粗后,滚动到固定列下被遮挡,已解决

横向滚动条按要求加粗后,遇到的问题:列表的操作列是固定在最右侧的,当滚动条滑动到最右侧的时候,滚动条被遮挡了 我尝试了几种方法都不行,比如找到.el-table__fixed-right .el-table__fixed-footer-wrapper &#xff…

LoadRunner12添加集合点

集合点的含义和意义: 集合点用于保证真正的并发。当脚本运行到集合点函数时,将停止运行并等待其允许运行的条件(即集合点策 略),达到后才释放集合点开始运行。用来分析软件性能瓶颈。 一般将集合点放在开始事务代码之前。 通常来说集合点不需…

Vue2 axios

1.安装引入 axios npm i axios 2.配置代理 1.配置代理(方式一) module.exports {devServer: {proxy: http://localhost:5000} } 1.发送ajax请求 getStudent(){axios.get(http://localhost:8080/students).then(res>{console.log(请求成功了,res.data);},error>{co…

大咖公开课 | AI自动化应用开发,让创意与效率并驾齐驱!

在这个日新月异的时代,人工智能(AI)与自动化技术的融合正以前所未有的速度重塑着各行各业。你是否梦想过,在信息的海洋中自动筛选出精华,用创意点亮每一篇内容,同时让繁琐的工作流程变得轻松高效&#xff1…

丰收季遇科技之光:北斗卫星导航引领现代农业新篇章

在这个金风送爽、硕果累累的丰收时节,广袤的田野上洋溢着农民们欢声笑语,每一粒饱满的果实都是大自然与辛勤耕耘者的共同馈赠。而在这片希望的田野上,一项科技革命的浪潮正悄然改变着传统农业的面貌——北斗卫星导航系统,正以它精…

Win10电脑怎么开启远程桌面?

在工作中,远程连接是一种常见的操作需求,而在Windows系统中提供远程连接功能。然而,Windows自带远程控制功能需要电脑设置允许远程连接,才能进行远程控制。那么,Win10如何设置允许远程连接?Win10开启远程桌…

一次异常艰难的渗透测试

0x01 暴力破解 朴实无华的弱口令,我都怀疑是不是交互式蜜罐。 0x02 文件上传 该系统所有文件上传功能均通过同一方式进行上传。 文件列表,可以看到文件上传后,从文件列表处能看到FileDirFilePath为文件路径的存放路径,文件名为G…

mybatis-plus执行delete时报错Prohibition of full table deletion

1.由于mybatis预防全表删除,所以会报错,想要执行全表数据删除需要加注解 2.同时执行语句修改为注解的sql语句 InterceptorIgnore(blockAttack "true")

Python利用xlrd复制一个Excel中的sheet保留原格式创建一个副本(注:xlrd只能读取xls)

目录 专栏导读库的介绍库的安装完整代码总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文…

阿里云无影?云电脑有心

很高兴收到了阿里云无影云电脑的测试邀请,试用结果让我非常惊讶。我通过该产品看到,阿里云“又”要开拓出一个千亿级的云电脑市场——为什么要说“又”?因为“就”是他们带头开拓了千亿级的公有云市场啊。 本文不仅是在帮企业用户做选型分析&…

npm error,淘宝源过期,切换源

npm error,淘宝源过期,切换源 npm ERR! request to https://registry.npm.taobao.org/file-saver failed, reason: certificate has expired 淘宝源过期,切换源:流水线配置: sh:"npm config set registry https:…

玩转haproxy --花十分钟看看,全是干货

Haproxy是一款开源集群软件(在上一篇文章中提到过集群的相关知识,往期点击http://t.csdnimg.cn/qWtQG)是法国开发者 威利塔罗(Willy Tarreau) 在2000年使用C语言开发的,是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器 …

有道云docx转换markdown,导入hugo发布到github page,多平台发布适配

版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ 有道云导出docx 有道云笔记右上角更多按钮选择【导出为Word】,可以导出docx文档 docx转换markdown 尝试了几个docx转markdown的python库后&…

1.2 数据库管理系统的基本原理

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

子网掩码是什么?

子网掩码(Subnet Mask)是用于划分网络的一个32位的二进制数,用于指示IP地址中哪些位用于网络标识,哪些位用于主机标识。 在IPv4网络中,IP地址由32位二进制数组成,通常表示为四个十进制数,每个数…

Leetcode—1006. 笨阶乘【中等】

2024每日刷题&#xff08;156&#xff09; Leetcode—1006. 笨阶乘 实现代码 class Solution { public:int clumsy(int n) {stack<int> st;st.push(n);n--;int idx 0;while(n ! 0) {if(idx % 4 0) {int num st.top() * n;st.pop();st.push(num);} else if(idx % 4 …

plsql如何连接sql server?plsql连接oracle数据库如何配置

在当今企业数据管理和应用开发中&#xff0c;数据库的互联互通已成为常态。特别是在多数据库环境下&#xff0c;如Oracle和SQL Server的结合使用&#xff0c;为企业提供了更广阔的数据处理能力。PL/SQL作为Oracle数据库的过程化扩展语言&#xff0c;能够高效地管理Oracle数据库…