日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按着一定的规则进行重命名,当文件数量及其庞大的时候手工一个一个的去修需要耗费大量的时间,以下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工具 - 批量文件重命名的更多相关文章

  1. python实现批量文件重命名

    本文实例为大家分享了python批量文件重命名的具体代码,供大家参考,具体内容如下 问题描述 最近遇到朋友求助,如何将大量文件名前面的某些字符删除. 即将图中文件前的编号删除. Python实现 用到 ...

  2. Java用来进行批量文件重命名,批量提取特定类型文件

    原因: 因为在网上下载视频教程,有的名字特别长,一般都是机构或者网站的宣传,不方便直接看到视频的简介,所以做了下面的第一个功能. 因为老师发的课件中,文件夹太多,想把docx都放在同一个文件夹下面,一 ...

  3. python学习笔记--文件重命名,删除及文件夹

    文件重命名 import os os.rename('123.txt','456.txt') 删除文件 >>> import os >>> os.remove('4 ...

  4. 用Python写的批量文件重命名

      有些时候下载图片或其他文件,文件名都怪怪的,可选的办法是下载一个文件批量重命名的软件.当然,如果想自己'DIY'一把的话编个Python脚本最好不过了. 下面的代码实现的对指定类型的文件进行批量重 ...

  5. Python批量文件重命名

    今天,得到一个里面都是图片的文件夹,但是图片都没有后缀,因此想用Pythton批量地为所有的文件加上".jpg"的后缀,代码如下: #-*- coding:utf-8 -*- #重 ...

  6. 批量文件重命名工具-极力推荐 advanced renamer

    http://www.advancedrenamer.com/  功能太强大了,自己慢慢探索吧.

  7. Python实例31[批量对目录下文件重命名]

    经常会遇到下载的文件或电子书,名字中间都包含了一些网址信息,实际使用中由于名字太长不方便,下面的脚本使用正则表达式来对目录下的所有文件重命名:例如: 修改前:[大家网]Mac OS X for Uni ...

  8. asp.net 文件批量移动重命名

    最近闲时写了个批量移动重命名文件的工具 点击下载工具

  9. Python脚本轻松实现批量图片重命名

    ************************************************************************** 摘要:网上爬取的图片名字很混乱,格式也比较多,需要 ...

随机推荐

  1. ModuleNotFoundError: No module named 'win32api'

    原因:缺少了win32解决: pip install pypiwin32

  2. UVA 129困难的串【DFS】

    题目链接 题目大意: 给出n,l:要求按特定格式输出由前l个大写字母构成的按字母表排列的第n个没有连续重复子串的字符串以及该字符串长度. 此题是一道dfs递归回溯的基础题,难点在于对当前字符串是否有连 ...

  3. jupyter notebook connecting to kernel problem

    前几天帮同学配置 python 和 anaconda 环境,在装 jupyter notebook 时,出了点问题,搞了一天半终于搞好了,也是在 github 里找到了这个问题的解答. 当时显示的是无 ...

  4. go语言学习-常用命令

    前面的文章中记录了安装 golang 和配置开发环境,本文将学习的 go 命令行命令以及使用场景. 查看可用命令 直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要 ...

  5. hihocoder 1496 寻找最大值(高维前缀最大次大值)

    [题目链接] https://hihocoder.com/problemset/problem/1496 [题目大意] 给定N个数A1, A2, A3, ... AN, 从中找到两个数Ai和Aj(i≠ ...

  6. 在deepin中安装docker

    用往常方法安装 一般在Linux中安装docker的时候都会使用这条命令 wget -qO- https://get.docker.com/ | sh 而在deepin这么做缺不行 打开网址即可发现支 ...

  7. C++学习笔记42:进程管理

    子进程异步清除 SIGCHLD信号:子进程终止时,向父进程自动发送,编写此信号处理例程,异步清除子进程 #include <signal.h> #include <string.h& ...

  8. zabbix 添加用户 配置权限

    点击 Administration → Users 添加新用户,单击 Create user  ,在新的用户表单中,确保将用户添加到现有用户组之一,例如“Zabbix administators”. ...

  9. 【转载】实用VC++6.0插件

    [转自]http://www.cnblogs.com/witxjp/archive/2011/04/03/2004556.html Visual Assist(强烈推荐)网址:http://www.w ...

  10. win10常用快捷命令——运行面板启动

    打开运行面板,WIN+R 打开命令提示符面板  ,在运行面板输入cmd,回车                      打开控制面板  ,在运行面板输入control,回车 打开IIS管理器面板  , ...