需求:

经常有很多相似的文件需要重命名,如果一个一个来太麻烦了,正好会Python,所以用Python写了个脚本,把符合要求的文件的文件名修改为新的。

代码:

# coding:utf-8
# @Time : 2021/5/18 15:32
# @Author : minuy
# @File : rename.py import os
import re def get_suffix(file):
"""
获取文件后缀
:param file: 文件名
:return: 文件后缀
"""
return re.sub(r'.+\.', '', file) def get_new_name(old_file_name):
"""
根据旧的文件名,生成新的文件名
:param old_file_name: 旧的文件名
:return: 如果返回False,不执行更改,否则返回新的文件名
"""
suffix = get_suffix(old_file_name)
new_file_name = old_file_name
if suffix == 'java':
new_file_name = old_file_name.replace(suffix, 'txt')
return new_file_name def change_file_name(file_dir, is_show=True):
"""
遍历并重命名文件
:param is_show: 是否显示调试信息
:param file_dir: 根目录
:return: 成功个数 失败个数
"""
rename_count = 0
failed_count = 0
for root, dirs, files in os.walk(file_dir):
if is_show:
print(root) # 当前目录路径
print(dirs) # 当前路径下所有子目录
print(files) # 当前路径下所有非目录子文件
for file_name in files:
new_name = get_new_name(file_name)
if new_name:
old_name = os.path.join(root, file_name)
new_name = os.path.join(root, new_name)
if old_name != new_name:
if is_show:
print('文件名改变 -> ', old_name, new_name)
os.rename(old_name, new_name)
rename_count += 1
else:
failed_count += 1
return rename_count, failed_count if __name__ == '__main__':
ret = change_file_name(r"D:\Minuy\Desktop\试卷\java")
print('修改文件名 -> 成功个数:', ret[0], '失败个数:', ret[1])

说明:

很简单,change_file_name函数就是遍历整个目录,把文件名传入get_new_name函数,get_new_name函数负责生成新的文件名并返回,再由change_file_name函数去修改。使用时只需要根据自己的需求重写get_new_name函数即可。

【Python】文件批量重命名的更多相关文章

  1. C#实现文件批量重命名源码下载

    本文要实现的功能是 文件批量重命名,当选择一个文件夹时,通过操作可以把文件夹下面所有文件进行重命名.建立了HoverTreeBatch项目. 然后 定义文件夹信息: DirectoryInfo _Th ...

  2. Java实现文件批量重命名

    Windows操作系统可以实现重命名文件操作,却不能实现批量重命名.本实例实现了批量重命名功能,可以将一个文件夹内同一类型的文件按照一定的规则批量重命名.用户可以给出重命名模板,程序可以根据模板对相应 ...

  3. java IO 文件批量重命名

    java IO 文件批量重命名 package com.vfsd.renamefile; import java.io.File; import java.io.FileInputStream; im ...

  4. php文件夹下文件批量重命名

    php文件夹下文件批量重命名 <?php header("Content-type:text/html;charset=utf-8"); $dir = __DIR__.'./ ...

  5. 使用 vim 快速对当前文件夹下的文件批量重命名

    前言 我们在使用 Linux 的时候,有很多种方法可以对文件进行重命名,例如 命令行 下的 mv 命令,或者是使用像 dolphin 这样的图形文件管理器.但是有时候需要对一个文件夹下的所有文件批量重 ...

  6. 利用Python对文件批量重命名

    由于要用到对无序的文件进行重命名,以下写了一个脚本,进行批量进行重命名. 基本格式是  i.后缀名 ( i  循环条件下的数 ) 1 #coding:utf8 2 import os; 3 4 def ...

  7. 使用java对文件批量重命名

    有时候从网络上下载的电视剧或者动漫,名字上都会被该网站加上前缀或者后缀,如图: 那么处女座的同学就不同意了,不行,我就是想让它按照我的习惯方式命名!但是呢,一个个修改是不是特别麻烦,如果是上百个呢?如 ...

  8. Java 实现文件批量重命名亲测可用(精简版)

    package com.cmge.utils; import java.io.*; import java.util.*; import java.util.Map.Entry; import com ...

  9. 【Linux】文件批量重命名

    例如:我们现在有如下文件列表 我们现在想要把.log..LOG与.rar为扩展名的文件全部重新命名,具体脚本如下: #!/bin/sh ##------------------------------ ...

  10. Mac OS Yosemite 文件批量重命名

    首先,我们选中一个文件夹   右键,或者回车,给一个文件夹改名   同时选中三个文件夹   右键,选中批量更改   弹出批量更改,进行更改   改好后点回车,就能看到效果了   继续操作,完成所有文件 ...

随机推荐

  1. 注册中心如何选型?Eureka、Zookeeper、Nacos怎么选

    这是小卷对分布式系统架构学习的第9篇文章,第8篇时只回答了注册中心的工作原理的内容,面试官的第二个问题还没回答,今天再来讲讲各个注册中心的原理,以及区别,最后如何进行选型 上一篇文章:如何设计一个注册 ...

  2. winform 引用AForge调用摄像头拍照

    Nuget安装这个2个: AForge.Controls; AForge.Video.DirectShow; code: namespace WindowsFormsApp1 { partial cl ...

  3. Golang-文件处理11

    http://c.biancheng.net/golang/102/ Go语言自定义数据文件 对一个程序非常普遍的需求包括维护内部数据结构,为数据交换提供导入导出功能,也支持使用外部工具来处理数据.由 ...

  4. React、Angular、Vue.js三者比较指南

    Vue-React-Angular三者区别   1. 基本概念Angular 是一个应用设计框架与开发平台,用于创建高效.复杂.精致的单页面应用. React 是一个用于构建用户界面的 JavaScr ...

  5. 让你看懂dart中静态成员和继承

    静态属性和静态方法 在dart中,我们可以通过关键字 static来定义静态属性和静态方法. 需要注意的是: 静态方法不能访问非静态属性[结论1] 非静态方法可以访问静态成员[结论2] 我们通过下面的 ...

  6. 【译】MongoDB EF Core 提供程序:有什么新功能?

    原文 | Rishit, Luce 翻译 | 郑子铭 这是 Rishit Bhatia 和 Luce Carter 的客座文章.Rishit 是 MongoDB 的高级产品经理,专注于 .NET 开发 ...

  7. 以数字守护汉字!天翼云TeleDB数据库获GB 18030最高级别认证!

    近日,由工信部电子工业标准化研究院主办的GB 18030<信息技术 中文编码字符集>应用推广大会暨"汉字守护计划"成果发布会召开,工信部信发司.中央网信办信息化局.教育 ...

  8. 大模型背后的向量魔法:Embedding技术初探

    本文原本是2022年写的,然而一直没有完善,自从LLM火起来之后,NLP领域的技术更新很快,本文只是大概介绍了Embedding相关的基础知识,具体应用接下来会在博客更新发布. 前言 又是很长一段时间 ...

  9. 优化-iceberg调参优化

    一.建表优化 1.iceberg表支持更新操作. 文档:https://iceberg.apache.org/docs/latest/configuration/ 功能描述:因v1只支持insert, ...

  10. Hetao P1178 冒险者 题解 [ 绿 ][ 最短路 ][ 线性 dp ]

    冒险者 题解 本蒟蒻采用的和大部分人解法不同,是根据当前标记值的总和跑最短路的一种解法. 思路 30min ,调代码 2h 的我太蒻了 首先观察题面可以发现本题求的是最少操作数,由于要求最小且有变化的 ...