您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:python批量改文件名,截取原文件名的一部分

51自学网 2021-03-07 19:20:59
  python
这篇教程python批量改文件名,截取原文件名的一部分写得很实用,希望能帮到您。
原文:https://blog.csdn.net/qq_41132565/article/details/111559798?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242
新下了一堆视频学习,但是文件名也太长了,这完全没必要啊。写个脚本改一下名吧。目录在下面

    第一步 读取文件名
    第二步 重点!正则表达式提取需要保留的部分
    第三步 正式改名
    改名成功


在这里插入图片描述

第一步 读取文件名

filesDir = "../../后端学习/尚硅谷SpringBoot2"
fileNameList = os.listdir(filesDir)
#输出看一下
for filename in fileNameList:
    print(filename)

    1
    2
    3
    4
    5
    6

需要os库 自己导入在这里插入图片描述
第二步 重点!正则表达式提取需要保留的部分

这个需要re库,自己搜怎么安
我们拿几个文件名举例子

    尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 046 - 46、web实验-遍历数据与页面bug修改.mp4
    尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 003 - 03、基础入门-SpringBoot的大时代背景.mp4
    尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 069 - 69、数据访问-准备阿里云redis环境.mp4
    尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 063 - 63、数据访问-整合mybatis-配置版.mp4

显然发现有共性对吧,我们把前面一样的删了留后面真正的课程标题就行,那咋办呢,正则表达式啊。

re库中compile方法可以返回一个正则表达式的截取规则

rules = re.compile(r'尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - (.*?).mp4')

    1

其中(.*?)表示任意字符出现任意次”,不懂也无所谓,也没必要学,正则表达式很灵fu活za。
就记住,我们最后取出的就是这个地方该有的一大堆字符,比如上面的这句,返回的就应该是

    003 - 03、基础入门-SpringBoot的大时代背景

要记住compile里传进去的一定是一个字符串,前面那个r是为了防止转义字符啥的,自己百度。建议正则表达式里不想要的前后部分,复制粘贴进去,免得敲错了空格啥的。
OK我们测试一下截取的成功与否,别急着改,截错了麻烦。

rules = re.compile(r'尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - (.*?).mp4')

for filename in fileNameList:
    print("旧的名字是:\t"+filename)
    print("开始截取!")
    newFilename = re.findall(rules, str(filename))[0]
    print("新名字是:\t" + newFilename)
    print("\n\n")


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    旧的名字是: 尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 077 - 77、指标监控-SpringBoot Actuator与Endpoint.mp4
    开始截取!
    新名字是: 077 - 77、指标监控-SpringBoot Actuator与Endpoint
    ======================================================================================
    旧的名字是: 尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 032 - 32、请求处理-【源码分析】-各种类型参数解析原理.mp4
    开始截取!
    新名字是: 032 - 32、请求处理-【源码分析】-各种类型参数解析原理
    ======================================================================================
    旧的名字是: 尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 046 - 46、web实验-遍历数据与页面bug修改.mp4
    开始截取!
    新名字是: 046 - 46、web实验-遍历数据与页面bug修改
    ======================================================================================
    旧的名字是: 尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 003 - 03、基础入门-SpringBoot的大时代背景.mp4
    开始截取!
    新名字是: 003 - 03、基础入门-SpringBoot的大时代背景
    ======================================================================================
    旧的名字是: 尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 069 - 69、数据访问-准备阿里云redis环境.mp4
    开始截取!
    新名字是: 069 - 69、数据访问-准备阿里云redis环境
    ======================================================================================

ok输出没问题
第三步 正式改名

用 os库里的rename方法

newFilename = newFilename + ".mp4"
os.rename(os.path.join(filesDir, filename), os.path.join(filesDir, newFilename))

    1
    2

rename第一个参数填旧文件名,第二个填新的,记得把.mp4后缀加上啊,还需要注意,亲测需要绝对路径所以用os库里的join方法拼成绝对路径。

测试一下

for filename in fileNameList:
    print("旧的名字是:\t" + filename)
    print("开始截取!")
    newFilename = re.findall(rules, str(filename))[0]
    print("新名字是:\t" + newFilename)
    print("开始改名。。。")
    newFilename = newFilename + ".mp4"
    os.rename(os.path.join(filesDir, filename), os.path.join(filesDir, newFilename))
    print("改名完毕!")
    print("======================================================================================")

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    旧的名字是: 尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 058 - 58、嵌入式Servlet容器-【源码分析】切换web服务器与定制化.mp4
    开始截取!
    新名字是: 058 - 58、嵌入式Servlet容器-【源码分析】切换web服务器与定制化
    开始改名。。。
    改名完毕!
    ======================================================================================
    旧的名字是: 尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - 060 - 60、数据访问-数据库场景的自动配置分析与整合测试.mp4
    开始截取!
    新名字是: 060 - 60、数据访问-数据库场景的自动配置分析与整合测试
    开始改名。。。
    改名完毕!
    ======================================================================================

看一下文件夹在这里插入图片描述
改名成功

所有代码都给你们

import os
import re

filesDir = "../../后端学习/尚硅谷SpringBoot2"
fileNameList = os.listdir(filesDir)
rules = re.compile(r'尚硅谷2021最新版SpringBoot2全套完整版(spring boot2核心技术与响应式编程) - (.*?).mp4')

for filename in fileNameList:
    print("旧的名字是:\t" + filename)
    print("开始截取!")
    newFilename = re.findall(rules, str(filename))[0]
    print("新名字是:\t" + newFilename)
    print("开始改名。。。")
    newFilename = newFilename + ".mp4"
    os.rename(os.path.join(filesDir, filename), os.path.join(filesDir, newFilename))
    print("改名完毕!")
    print("======================================================================================")


————————————————
版权声明:本文为CSDN博主「RookieZc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41132565/article/details/111559798
python把多个文件夹中文件合并到一个文件夹中
python界面 | 实战Tkinter图形界面开发
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1