python工具 - 批量文件重命名
日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按着一定的规则进行重命名,当文件数量及其庞大的时候手工一个一个的去修需要耗费大量的时间,以下python工具可以协助批量修改文件名。
场景:某文件夹下由多种不同后缀类型的文件组成,先将后缀均为.mdb的所有文件更改为python01.mdb,python02.mdb...
代码部分:
import os prefix = 'python' # prefix 为文件重命名后的起始字符
length = # length为去除prefix后文件名要达到的长度
base = # 文件名的起始数
format = 'mdb' # 需要重命名什么后缀的文件 # 函数PadLeft的作用是将文件名补充到指定长度
# str代表要补全的字符
# num代表要达到的长度
# padstr代表到达长度需要添加的字符 def PadLeft(str,num,padstr):
#计算传入字符当前的长度
stringlength = len(str)
# 用标准长度 - 当前长度得出n,n为待补全的位数
n = num - stringlength
# 如果n>=,代表需要补全一定的位数
if n >= :
# 使用padstr * n + str后可以得到指定的长度
str = padstr * n + str
return str # 为避免误操作,提示用户
print('the files in [%s] will be renamed!' % os.getcwd())
# 获取当前目录的所有文件并打印
allfiles = os.listdir(os.getcwd())
print([f for f in allfiles if os.path.isfile(f)])
# 确认用户是否按'y'继续,否则直接exit()退出。
input = input('please press \'y\' to continue:')
if input.lower() != 'y' :
exit() # 获取当前位置的所有文件名,保存在列表filenames中
filenames = os.listdir(os.curdir)
i = base - # for循环遍历filenames里面的文件名
for filename in filenames:
i = i+
# 判断当前路径是否为文件,并且不是rename.py
if filename != 'rename.py' and os.path.isfile(filename):
# 将i转换为字符串,i的初始值为1
name = str(i)
# 使用PadLeft函数将文件名后缀补充到指定长度
name = PadLeft(name,length,'')
# split分割后的内容以['a11_3', 'py']的形式保存给列表t,分割文件名同时检查是否是需要修改的类型
t = filename.split('.')
m = len(t)
# 如果未指定文件后缀,则更改当前目录下所有的文件
if format == '':
os.rename(filename,prefix+name+'.'+t[m-])
else:
# 否则如果文件后缀等于format,也就是'mdb'的时候,执行对该文件的重命名
# filename重命名由3部分组成,即prefix(python)+name(,...)+'.'+t[m-] (后缀mdb)
if t[m-] == format:
os.rename(filename,prefix+name+'.'+t[m-])
else:
i = i - # 保证i连续
else: i = i - # 保证i连续 # 获取重命名后的文件列表并打印
allfiles = os.listdir(os.getcwd())
print([f for f in allfiles if os.path.isfile(f)])
执行结果:
the files in [/Users/pentest/PycharmProjects/python_basic/python教程/文件与文件系统/批量重命名文件名] will be renamed!
['a.mdb', 'a11_3.py', 'a11_4.py', 'ab.mdb', 'ae.mdb', 'b.mdb', 'c.mdb', 'rename.py']
please press 'y' to continue:y
['a11_3.py', 'a11_4.py', 'python01.mdb', 'python02.mdb', 'python03.mdb', 'python04.mdb', 'python05.mdb', 'rename.py']
更改前:
['a.mdb', 'a11_3.py', 'a11_4.py', 'ab.mdb', 'ae.mdb', 'b.mdb', 'c.mdb', 'rename.py']
更改后:
['a11_3.py', 'a11_4.py', 'python01.mdb', 'python02.mdb', 'python03.mdb', 'python04.mdb', 'python05.mdb', 'rename.py']
python工具 - 批量文件重命名的更多相关文章
- python实现批量文件重命名
本文实例为大家分享了python批量文件重命名的具体代码,供大家参考,具体内容如下 问题描述 最近遇到朋友求助,如何将大量文件名前面的某些字符删除. 即将图中文件前的编号删除. Python实现 用到 ...
- Java用来进行批量文件重命名,批量提取特定类型文件
原因: 因为在网上下载视频教程,有的名字特别长,一般都是机构或者网站的宣传,不方便直接看到视频的简介,所以做了下面的第一个功能. 因为老师发的课件中,文件夹太多,想把docx都放在同一个文件夹下面,一 ...
- python学习笔记--文件重命名,删除及文件夹
文件重命名 import os os.rename('123.txt','456.txt') 删除文件 >>> import os >>> os.remove('4 ...
- 用Python写的批量文件重命名
有些时候下载图片或其他文件,文件名都怪怪的,可选的办法是下载一个文件批量重命名的软件.当然,如果想自己'DIY'一把的话编个Python脚本最好不过了. 下面的代码实现的对指定类型的文件进行批量重 ...
- Python批量文件重命名
今天,得到一个里面都是图片的文件夹,但是图片都没有后缀,因此想用Pythton批量地为所有的文件加上".jpg"的后缀,代码如下: #-*- coding:utf-8 -*- #重 ...
- 批量文件重命名工具-极力推荐 advanced renamer
http://www.advancedrenamer.com/ 功能太强大了,自己慢慢探索吧.
- Python实例31[批量对目录下文件重命名]
经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:例如: 修改前:[大家网]Mac OS X for Uni ...
- asp.net 文件批量移动重命名
最近闲时写了个批量移动重命名文件的工具 点击下载工具
- Python脚本轻松实现批量图片重命名
************************************************************************** 摘要:网上爬取的图片名字很混乱,格式也比较多,需要 ...
随机推荐
- curl 文件上传
curl_file_create (带路径的文件名 [, 文件mimetype , 上传数据里的文件名] ) ; new cURLFile (带路径的文件名 [, 文件mimetype , 上传数据里 ...
- 001.网络TCP/IP工程知识点
一 互联网概述 计算机网络定义:由自主计算机互连起来的集合体. 计算机网络两大部分:硬件:计算机.通信设备.接口设备和传输介质. 软件:通信协议和应用软件. 广域网拓扑结构通常有:网状拓扑结构和环形拓 ...
- tensorflow 使用CPU而不使用GPU的问题解决
今天发现一个怪现象,在训练keras时,发现不使用GPU进行计算,而是采用CPU进行计算,导致计算速度很慢. 用如下代码可检测tensorflow的能使用设备情况: from tensorflow.p ...
- 移动端、PC端(前后台)、小程序常用的UI框架
1.移动端UI库 ①.Vant UI 官方地址:https://youzan.github.io/vant/#/zh-CN/intro github地址:https://github.com/youz ...
- saxon 处理xslt
下载saxon : https://sourceforge.net/projects/saxon/?source=typ_redirect 下载后拿到: saxon9he.jar 运行CMD: C:\ ...
- DB安装
start from the execute file : DB2_ESE_10_Win_x86-64\setup.exe Navigator to "Install a Product&q ...
- jQuery.when().done()
在使用jQuery.when()调用外部声明方法时,如果方法不为Deferred(延时)对象,则done会立即执行,所有需要在调用的方法声明一个var deferred = $.Deferred(); ...
- Nowcoder 提高 Day1
比赛链接 A 中位数(前缀和 二分) 额,确实没想到逼近... 然后写了n^2log的暴力,还CE了 只需要判断是否能有大于当前mid的中位数就好 这显然是可以二分的 代码 #include<b ...
- HDU3915 Game 高斯消元
题目链接 HDU3915 Game 高斯消元 题解 求异或方程组自由元的子集个数 高斯消元求秩,内存溢出好神 代码 #include<bitset> #include<cstdio& ...
- [洛谷U40581]树上统计treecnt
[洛谷U40581]树上统计treecnt 题目大意: 给定一棵\(n(n\le10^5)\)个点的树. 定义\(Tree[l,r]\)表示为了使得\(l\sim r\)号点两两连通,最少需要选择的边 ...