正文
批量顺序重命名:按原本文件的排列循序重命名,只改变文件名称,不改变前后文件的位置关系;
感谢评论区提醒:os.listdir
并不是按照文件夹里的默认顺序提取的,,,所以第一段代码其实就相当于乱序
了。
此代码之前用于深度学习数据集的处理上,图片和标签在两个文件夹下是一一对应的(同名的图片与标签只是后缀不同,如test1.jpg、test1.xml
),用此脚本分别对两个文件夹进行批量重命名,得到的图片和标签还是一一对应的。
PS:若想不改变前后文件的位置关系,此代码不可行
。
# 导入os包
import os
def file_rename(path, begin_num):
"""
@param path: 文件夹路径
@param begin_num: 起始命名数字
"""
# 设定文件路径
i = begin_num
# 对目录下的文件进行遍历
for file in os.listdir(path):
# 判断是否是文件
if os.path.isfile(os.path.join(path, file)) == True:
# 设置新文件名
new_name = file.replace(file, "%d.jpg" % i)
# 重命名
os.rename(os.path.join(path, file), os.path.join(path, new_name))
i += 1
# 结束
print("End")
if __name__ == '__main__':
path = './test_model/total1/'
file_rename(path, 0)
批量乱序重命名:从结果形式上看也是重命名,不仅只改变文件名称,还改变前后文件的位置关系(重命名+Shuffle);
import random
import os
def file_rename_shuffle(path):
"""
@param path: 文件夹路径
"""
fileList = os.listdir(path) # 获得所有文件名列表,可以print(fileList)查看
Imgnum = len(fileList)
print(Imgnum)
i = 0
L = random.sample(range(0, Imgnum), Imgnum)
print(L)
filetype = ".jpg" # 文件类型
for filename in fileList:
print(filename)
portion = os.path.splitext(filename) # 将文件名拆成名字和后缀
if portion[1] == filetype: # 检查文件的后缀
newname = str(L[i]) + filetype
print(newname)
os.rename(path+filename, path+newname) # 修改名称
i += 1
if __name__ == '__main__':
path = './test_model/test/'
file_rename_shuffle(path)
使用心得
批量顺序重命名应用广泛;
批量乱序重命名多用于将两堆分类好的数据打乱;
如果阅读本文对你有用,欢迎关注点赞评论收藏呀!!!
2021年3月13日17:09:58
修改时间:
2023年4月14日09:47:12