Python批量自动修改文件名,按指定的格式自动命名方式
作者:Pandas_007
这篇文章主要介绍了Python批量自动修改文件名,按指定的格式自动命名方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
问题引入
在我们在对一个已经排好序的项目进行增删改之后,文件名可能不再连续,有所缺失,这时我们需要对所有文件进行有序的排序,需要借助Python来进行自动获取所有文件的数量然后自动进行排序。
例如我对某个文件进行删除后,图片的命名已经不连续了,需要对其后面的需要按顺序进行排列 。
再运行完os库的代码后,文件名已经变成连续的了。
如下图:
OS库的方法
os.listdir(path)
--查看路径下的所有文件os.rename
(旧文件名,新文件名)--用于更改文件名字os.mkdir(path)
-在path路径下创建目录os.remove(path)
--删除文件os.stat(path)
--获取文件信息,存储的内存大小
只通过OS来批量修改文件名
def File_name_sorting(filepath,outpath): import os alldates=os.listdir(filepath) #获得路径中的所有文件 alldates.sort(key=lambda X : int(X[:-4])) #将文件名按照数字排序;X[:-4]是取.jpg前面的文件名 作用是屏蔽后缀名.jpg for i in range(1,len(alldates)+1): filepath=filepath+r'/'#读入文件的路径 os.rename(filepath+str(alldates[i-1]),outpath+str(i)+'.jpg') if __name__ == '__main__': filepath=r'E:\项目\python项目\爬虫\ebird\Larus ridibundus\img2'#需要重命名的路径 outpath=r'E:\项目\python项目\爬虫\ebird\Larus ridibundus\img/'#导出的路径 File_name_sorting(filepath,outpath)
通过cv2库进行批量修改文件名
cv.imwrite(path,file)把每一个文件取出后再通过此函数,保存至新的文件名,通过在其外层添加循环以此来达到批量修改文件名的效果。
代码如下:
def renamefile_cv(path,imgPath): import cv2 import os file_lst = os.listdir(path) frame_count=0 #起始的文件名名字 后续加了1 所以这里设置为0 for filename in file_lst: frame_count=frame_count+1 frame=cv2.imread(path + filename) print('正在处理第'+ str(frame_count) + '张图片') cv2.imwrite(imgPath + str(frame_count)+'.jpg', frame) if __name__ == '__main__': path=r'E:\项目\python项目\爬虫\ebird\Larus ridibundus\img/' imgPath=r'E:\项目\python项目\爬虫\ebird\Larus ridibundus\imges/' renamefile_cv(path,imgPath)
常见问题:
①读取不到图片,路径全部修改为英文再尝试。
②运行了一会后报错,可能其文件格式不一致,即使它显示的是jpg,这时可以自主添加try,except,跳过本文件,继续修改下一个文件名。
下面是升级后的代码:
def renamefile_cv(path,imgPath): import cv2 import os file_lst = os.listdir(path) frame_count=0 #起始的文件名名字 后续加了1 所以这里设置为0 for filename in file_lst: frame_count=frame_count+1 try: frame=cv2.imread(path + filename) print('正在处理第'+ str(frame_count) + '张图片') cv2.imwrite(imgPath + str(frame_count)+'.jpg', frame) except: print("{}存在问题".format(filename)) pass if __name__ == '__main__': path=r'E:\项目\python项目\爬虫\ebird\Larus ridibundus\img/' imgPath=r'E:\项目\python项目\爬虫\ebird\Larus ridibundus\imges/' renamefile_cv(path,imgPath)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。