Python批量改文件名

2023-11-11

对以下路径中的文件名批量修改。

一、读取指定路径中的文件名

#导入标准库
import os

#读取文件名
filesDir = "路径……"
fileNameList = os.listdir(filesDir)

#输出路径中的所有文件
for filename in fileNameList:
    print(filename)

二、正则表达式提取需要保留的部分

1、介绍re库

这里需要导入re库,re库主要是Python的标准库,主要用于字符串匹配。

Re库主要函数

函数名称

作用

返回类型

re.findall()

搜索并返回所有能匹配到的子串

列表类型

re.match()

从字符串的开头进行匹配

match对象

re.search()

搜索匹配到的第一个位置

match对象

re.split()

将字符串按匹配结果进行分割

列表类型

re.finditer()

搜索返回匹配结果的迭代类型

match对象

re.sub()

在字符串中替换所有匹配正则表达式的子串 ,返回替换后的字符串

字符串

2、re库中函数的用法
(1)re.findall() #最常用

第一个参数为匹配的正则表达式,第二个参数为要搜索的字符串。

import re

#搜索所有的五位数字
ls = re.findall(r'[1-9]\d{5}','BIT100081  TUS444567')
print(ls)


['100081', '444567']
(2)re.sub(pattern,repl,string,count)

参数

作用

pattern

正则表达式

repl

替换匹配字符串的字符串

string

匹配字符串

count

最大替换次数

re库的具体用法,读者自己探索,由于字符串的复杂程度不同,正则表达式的用法不同。详情可以仔细研究官网或者菜鸟教程:Python3 正则表达式

3、例子说明
  • 以本例子说明,这几个文件名的相同部分,都有括号,所以先写匹配括号的正则表达式。

  • re库中compile方法 可以返回一个正则表达式的截取规则。其中(.*?)表示任意字符出现任意次。

# 正则表达式提取需要保留的部分,,,,主要匹配删除括号的内容
rules = re.compile(r'[(](.*?)[)]', re.S)
  • 这样就把括号以及括号中的内容删除掉了。
  • 要记住compile里传进去的一定是一个字符串,前面 r 是防止转义字符。测试一下是否匹配,避免出现错误。
# 正则表达式提取需要保留的部分,,,,主要匹配删除括号的内容
rules = re.compile(r'[(](.*?)[)]', re.S)

#开始数组循环更改文件名
for filename in fileNameList:
    print("旧的名字是:\t"+filename)
    print("开始截取!")
    newFilename = re.sub(rules,'',str(filename))
#输出保留的内容
    print("新名字是:\t"+newFilename)
    print("\n\n")

三、正式更改文件名

1、用 os库里的rename方法
os.rename(os.path.join(filesDir, filename), os.path.join(filesDir, newFilename))
2、测试是否正确

注: 不同的文件名,有不同的使用正则表达式的方式,还是具体问题具体分析。

#开始数组循环更改文件名
for filename in fileNameList:
    print("旧的名字是:\t"+filename)
    print("开始截取!")
    newFilename = re.sub(rules,'',str(filename))
#输出保留的内容
    print("新名字是:\t"+newFilename)
    print("开始改名。。。")
    os.rename(os.path.join(filesDir, filename), os.path.join(filesDir, newFilename))
    print("改名完毕!")
    print("======================================================================================")
3、其他的匹配情况
(1)匹配文件名序号
#删除重复的文件名序号
rules = re.compile(r'^\d', re.S)
  • 如果文件名有两个序号,并且重复,即可使用此功能,像此案例就不可以使用,因为两个序号不相同。

  • 如果文件不超过0-9,运行一次即可;但是超过10-99,可以在运行一次;如果序号为三位,可以运行第三次。

  • \d 等价于 [0-9]

(2)匹配特殊字符
#删除文件名前的特殊字符,如果是"."删除".",如果是"#"删除"#"
rules = re.compile(r'^\.', re.S)
  • 注: 匹配的时候要注意,这个特殊符号所在的位置;如果在开头,要按添加 ^ 符号;如果在其他位置,则要注意,如果删除的是点 . ,后缀名中的点也要注意。这时就要一开始删除后缀名,在完成更改时再添加上指定的后缀名。
(3)删除字符串中的指定的部分
# 正则表达式删除指定的的部分
rules = re.compile(r'Swagger-[0-9][0-9]:', re.S)
  • 注: 正则表达式里指定的部分,建议复制粘贴,避免中间空格。
(4)最后一步添加后缀名
# 可以为文件名添加后缀,,,本质为在最后匹配的字符串最后增加一个部分,可以为数字,也可以为文件后缀
newFilename = newFilename + ".mp4"

四、完整代码

点击下载完整代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python批量改文件名 的相关文章

  • 赋值运算符左/右侧的不同切片行为

    作为一个来自 C 背景的 Python 新手 Python 3 4 x 中的切片运算符对我来说看起来很荒谬 我只是不明白 特殊规则 背后的设计理念 让我解释一下为什么我说它 特别 一方面 根据 Stack Overflow 的回答here
  • 为什么我的 jupyter 笔记本中不需要“%matplotlib inline”?

    我只是想理解为什么我的 jupyter 安装不需要我运行 matplotlib inline 根据我读过的所有内容 我应该运行它才能将我的绘图内联到我的 jupyter 笔记本中 但事实是 无论我是否运行 matplotlib inline
  • Python子进程:cmd退出时的回调

    我目前正在使用启动一个程序subprocess Popen cmd shell TRUE 我对 Python 相当陌生 但 感觉 应该有一些 api 可以让我做类似的事情 subprocess Popen cmd shell TRUE po
  • 在类中设置默认值

    我正在用 Python 创建一个类 但我不确定如何正确设置默认值 我的目标是为所有类实例设置默认值 也可以通过类方法对其进行修改 但是 我希望在调用方法后恢复初始默认值 我已经能够使用下面所示的代码使其工作 它不是很 漂亮 所以我怀疑这是解
  • Python groupby 无法按预期工作[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 Excel 电子表格 其中包含以下格式的一些列 column1 column1 AccountName column1 SomeOtherFeature column2 blabla colu
  • Python 比编译的 Haskell 更快?

    我有一个用 Python 和 Haskell 编写的简单脚本 它读取包含 1 000 000 个换行符分隔的整数的文件 将该文件解析为整数列表 对其进行快速排序 然后将其写入已排序的不同文件中 该文件与未排序的文件具有相同的格式 简单的 这
  • 给定一个正整数 n,如何打印高度为 n-1 的数字三角形?

    HackerRank 三角任务 https www hackerrank com challenges python quest 1 problem 仅使用算术运算 单个for loop 和一个单一的print陈述 不允许进行字符串操作 约
  • Django 和 VirtualEnv 开发/部署最佳实践

    只是好奇人们如何结合 virtualenv 部署 Django 项目 更具体地说 如何使生产虚拟环境与开发计算机正确同步 我使用 git 进行 scm 但 git 存储库中没有 virtualenv 我应该这样做 还是最好使用 pip fr
  • Python Ctypes:将返回的 C 数组转换为 python 列表,无需 numpy

    我正在使用 Python Ctypes 来访问一些 C 库 我连接到的函数之一返回const double 它实际上是一个双精度数组 当我在Python中得到结果时 如何将该数组转换为Python列表 C函数的签名 const double
  • Python 中的参数命名约定

    对于形式参数密切相关的函数 例如 def add two numbers n1 n2 return n1 n2 def multiply two numbers n1 n2 return n1 n2 如上所示 为两个函数中的参数指定相同的名
  • 具有动态特性的 Python 嵌套作用域

    需要帮助理解以下句子PEP 227 http www python org dev peps pep 0227 和Python 语言参考 http docs python org reference executionmodel html
  • 类型错误:不支持的操作数类型 -:“int”和“list”

    我正在尝试用 python 创建一个程序 它会使用 Zeller 算法告诉你你出生在星期几http en wikipedia org wiki Zeller 27s congruence http en wikipedia org wiki
  • 从可变长度字符串中解析值的最佳方法是什么?

    假设我有一个由可变长度的逗号分隔的整数字符串 分割字符串并用值更新变量 如果存在 的最佳方法是什么 目前 我有以下内容 a b c 10 10 1 default values mylist int x for x in input spl
  • 如何在 Windows 上检查子进程是否被信号杀死

    问题 给定一个在 python 中启动的子进程 其代码类似于 import subprocess p subprocess Popen command stdout subprocess PIPE stderr subprocess PIP
  • Python NameError,变量“未定义”

    它返回的错误是 NameError name lives is not defined 我知道代码并不是尽可能高效 这是我的第一个项目 但是无论我尝试做什么 都会弹出这个错误 我尝试为其创建一个全局变量 但这没有帮助 我真的很感激一些帮助
  • 在 Django 视图中访问其他项目中的模型导致“表不存在”错误

    基地项目结构 baseproject baseapp models py class BaseModel models Model 其他项目结构 project app views py urls py 项目 app views py im
  • 如何使用包含 \n 的 .txt 创建一维列表?

    我想读取一个文本文件并将文件的每个元素放入一个列表中 而不是为文件中的每一行都有一个单独的列表 例如 如果文件是 你好我的名字 Is Joe 我希望列表是 你好 我的名字是 Joe 而不是 你好 我的名字 是乔 这是我到目前为止所拥有的 d
  • python散景中的反转轴

    我正在尝试反转 y 轴并在散景散点图中设置 x 和 y 的范围 我在用 BokehPlot bokeh scatter data df x range min utc max utc y range min val max val 我收到错
  • 无法让我的脚本自动生成一些值以在有效负载中使用

    我创建了一个脚本 通过随后发送两个 https 请求来从目标页面获取 html 元素 我的脚本可以完美地完成这件事 但是 我必须从 chrome 开发工具复制四个值来填充其中的四个键payload为了发送最终的http请求到达目标页面 这是
  • 使用和不使用 SciPy 计算 k 组合的数量

    我对这个函数感到困惑combSciPy 的 http docs scipy org doc scipy 0 14 0 reference generated scipy misc comb html看起来比简单的 Python 实现要慢 这

随机推荐

  • 转载:电缆种类及选型计算

    电缆种类及选型计算一 电缆的定义及分类 广义的电线电缆亦简称为电缆 狭义的电缆是指绝缘电缆 它可定义为 由下列部分组成的集合体 一根或多根绝缘线芯 以及它们各自可能具有的包覆层 总保护层及外护层 电缆亦可有附加的没有绝缘的导体 我国的电线电
  • dockerfile制作各应用镜像实例

    目标 例如 记录 dockerfile制作各应用镜像实例代码 应用实例 搭建jar应用程序docker容器 Dockerfile文件 FROM java 8 MAINTAINER 126 126 net COPY automation 1
  • NuajWeatherSystem实现昼夜更替

    实现昼夜交替以及纬度变化 还有影响灯光的变化的Unity 3d插件 链接 http pan baidu com s 1mhFZa8w 密码 y3v1
  • gitlab帮助文档

    SSH keys An SSH key allows you to establish 建立 a secure connection between your computer and GitLab Before generating an
  • 项目1——博客系统

    一 绪言 今天又来更新博文了 学习Java也已经有一段时间了 经过这段时间的学习 我对Java有了更深一层的理解 从刚开始的HelloWorld到了现在的小型网页项目 这中间也经历了很多 话不多说 下面开始我的项目阐述 由于是第一次做 必然
  • Java实现对称加密算法-AES加解密

    AES Advanced Encryption Standard 意思是高级加密标准 是一种区块加密标准 这个标准用来替代原先的DES 且已经被广泛使用 DES使用56位密钥 所以比较容易被破解 AES可以使用128 192 和256位密钥
  • Linux CentOS7常用命令2(文件与目录)

    Linux常用命令2 一 Linux目录结构 二 命令学习 一 查看文件命令 cat 二 查看文件内容 more 四 查看文件内容 head tail命令 五 统计文件内容命令 wc 六 检索和过滤文件内容命令 grep 七 压缩命令 gz
  • 【AMD、CMD和CommonJS】

    CommonJS规范的特点 对于基本数据类型 属于复制 即会被模块缓存 同时 在另一个模块可以对该模块输出的变量重新赋值 对于复杂数据类型 属于浅拷贝 由于两个模块引用的对象指向同一个内存空间 因此对该模块的值做修改时会影响另一个模块 当使
  • Java异常分类总结

    在Java中 所有的异常都有一个共同的祖先Throwable 可抛出 类 Throwable指定代码中可用异常传播机制通过Java应用程序传输的任何问题的共性 Throwable有两个重要的子类 Exception 异常 和Error 错误
  • LeetCode-1792. 最大平均通过率【堆,优先队列,贪心】

    LeetCode 1792 最大平均通过率 堆 优先队列 贪心 题目描述 解题思路一 优先队列 首先任何一个班级 x y 加入一个聪明的学生之后增加的通过率为diff x 1 y 1 x y 那么对p进行堆排序 每次取最大的即可 解题思路二
  • Excel打开后关闭就马上跳出 Visual c++ Runtime Error R6025

    环境 Win10 专业版 Excel 2016 绿盾加密环境 问题描述 Excel打开后关闭就马上跳出 visual c runtime error R6025 runtime error program c program files m
  • KVM和QEMU

    原文地址 KVM和QEMU 作者 embeddedlwp 目录 1 硬件虚拟化技术背景 2 KVM的内部实现概述 2 1 KVM的抽象对象 2 2 KVM的vcpu 2 3 KVM的IO虚拟化 2 3 1 IO的虚拟化 2 3 2 Virt
  • jdk1.8.191 JVM内存参数 InitialRAMPercentage和MinRAMPercentage

    MaxRAMPercentage InitialRAMPercentage MinRAMPercentage 这三个参数是JDK8U191为适配Docker容器新增的几个参数 类比Xmx Xms 至于 XX InitialRAMFracti
  • 物联网安全概述

    什么是物联网 在你学习有关IPv6的时候 你的老师或许说过 有一天在你的房子每个设备都会有一个IP 物联网基本上就是处理每天的事务 并把它们连接到互联网上 一些常见的物联网设备 如灯光 窗帘 空调 也有像冰箱这样的不太常见的设备 甚至一个卫
  • [sicily] 1003. 相连的1

    声明 原题目转载自中山大学sicily平台 解答部分为原创 Problem 对于一个01矩阵A 求其中有多少片连成一片的1 每个1可以和上下左右的1相连 请为下面的Solution类实现解决这一问题的函数countConnectedOnes
  • 聚合支付行业术语,你get到了吗?

    俗话说 内行看门道外行凑热闹 每一个行业都有它独特的专业术语 对于外行人来说 这些专业术语就跟专有名词一样难懂 支付行业也是一样 因为是近几年的新兴行业 很多人对这一行不懂 甚至一些在支付行业工作的人 对这一行的很多名词概念也很模糊 认知仅
  • 基础篇(二):内存屏障是什么

    目录 前置知识 内存屏障 什么是内存屏障 作用 内存屏障的分类 1 强制读取 刷新主内存的屏障 强制刷新主内存 Load屏障 强制读取主内存 Store屏障 总结 2 禁止指令重排序的屏障 LoadLoad屏障 StoreStore屏障 L
  • 怎么修改游戏内存服务器,修改游戏服务器内存

    修改游戏服务器内存 内容精选 换一换 当您成功创建私有镜像后 镜像的状态为 正常 您可以使用该镜像创建服务器实例或云硬盘 也可以将镜像共享给其他帐号 或者复制镜像到其他区域 私有镜像的生命周期如图1所示 通过华为云创建的ECS服务器默认使用
  • mysql客户端小海豚_MySQL基础

    1 数据库概述 1 1数据的存储方式 第一种存储方式是创建对象 实际上new出来的对象不就是用来存数据的嘛 创建对象就是在堆内存中为对象请求了一个空间 相当于是将对象存入堆内存 第二种方式存文件中 这个在IO流部分我们就是这么处理的 但是缺
  • Python批量改文件名

    对以下路径中的文件名批量修改 文章目录 一 读取指定路径中的文件名 二 正则表达式提取需要保留的部分 1 介绍re库 2 re库中函数的用法 1 re findall 最常用 2 re sub pattern repl string cou