目录
前言
最近在做项目时,需要对数据集进行一系列的处理,包括视频抽帧、对图片的重命名、划分训练集测试集、复制标注文件到别的文件下,图像增强之平移等等,用到了一些脚本,现在整理发布一下。
一、批量更改文件夹下的文件名
可以实现xml、jpg、txt三种格式的批量修改。
"""
rename.py
此脚本用于批量替换更改文件夹下文件名
主要参考了os.path模块 https://www.runoob.com/python3/python3-os-path.html
"""
import os.path
path = r'F:\Python-Code\python脚本\clean'
for root, dirs, files in os.walk(path): #os.walk() 遍历目录下所有的文件名
# root是当前正在遍历的这个文件夹本身的路径;dirs是文件夹中所有子文件夹的名字;files是该文件夹下所有的文件的名字(不含子目录)
i = 0
j = 0
k = 0
for filename in files:
if filename.split('.')[-1] == 'xml':#split方法对字符串进行分割,[-1]从后向前数第一个
i += 1
newName = 'xxx_' + 'xxx_'+str(i).zfill(6)+'.xml'#zfill(x)返回指定长度的字符串,原字符串右对齐,前面填充0
os.rename(root +'/'+filename,root+'/'+newName) #两个参数一前一后是原文件名,目标文件名
print("重命名【%s】为【%s】成功"%(filename, newName))
elif filename.split('.')[-1] == 'jpg':
i += 1
newName = '000' + '111'+str(i).zfill(6)+'.jpg'
os.rename(root + '/' + filename, root + '/' + newName)
print("重命名【%s】为【%s】成功"%(filename, newName))
# 000111000001.jpg
# 000111000002.jpg
# 也支持中文
elif filename.split('.')[-1] == 'txt':
i += 1
newName = 'xxx_' + 'xxx_'+str(i).zfill(6)+'.txt'
os.rename(root + '/' + filename, root + '/' + newName)
print("重命名【%s】为【%s】成功"%(filename, newName))
else:
print(None)
"""
笔记:
常用的用于遍历文件夹、文件的语句有
for root, dirs,files in os.walk(path): #os.walk() 遍历目录下所有的文件名
for filename in files:
for pathAndFilename in glob.iglob(os.path.join(image_dir, "*.jpg")): #遍历目录下所有的jpg文件
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
if not os.path.exists(save_path):#新建文件夹
os.makedirs(save_path)
"""
二、批量更换文件夹下文件名中某个地方
"""
rename1.py
此脚本用于批量替换更改文件夹下文件名中某个地方,
主要参考了os.path模块 https://www.runoob.com/python3/python3-os-path.html
"""
import os
path = r'F:\Python-Code\python脚本\clean'
for root, dirs, files in os.walk(path):
for filename in files:
# title, text = os.path.splitext(os.path.basename(filename))#os.path.basename(filename)返回文件名
#os.path.splitext()分割路径中的文件名与拓展名
title, text = os.path.splitext(filename)
# title = title.replace(" ", "_")
# title = title.replace(",", "_")
# title = title.replace(".", "")
# 第一个是原文件中名字,第二个是更改的
title = title.replace('是', '111')
new_filename = os.path.join(root, title + text)
print(new_filename)
filename = os.path.join(root, filename)
os.rename(filename, new_filename)
三、批量给图片重命名
实现方法和一中类似
import os.path
def rename(img_folder,num):
for img_name in os.listdir(img_folder): # os.listdir(): 列出路径下所有的文件
#os.path.join() 拼接文件路径
src = os.path.join(img_folder, img_name) #src:要修改的目录名
# dst = os.path.join(img_folder, img_name.split('t')[0] + 'tCute' + str(num) + '.jpg') # dst: 修改后的目录名 注意此处str(num)将num转化为字符串,继而拼接
dst = os.path.join(img_folder, str(num) + '.jpg') #dst: 修改后的目录名 注意此处str(num)将num转化为字符串,继而拼接
num= num+1
os.rename(src, dst) #用dst替代src
def main():
img_folder0 = 'E:\Python-Code\DetectBlur\wqw/saiti4/' #图片的文件夹路径 直接放你的文件夹路径即可
num=0
rename(img_folder0,num)
if __name__=="__main__":
main()
总结
目标检测数据处理所用到的脚本_蒙城小亮的博客-CSDN博客_目标监测 split.py
以上就是今天要讲的内容,本文仅仅简单介绍了更改文件夹的使用。