Python批量自動修改文件名,按指定的格式自動命名方式
問題引入
在我們在對一個已經排好序的項目進行增刪改之后,文件名可能不再連續(xù),有所缺失,這時我們需要對所有文件進行有序的排序,需要借助Python來進行自動獲取所有文件的數量然后自動進行排序。

例如我對某個文件進行刪除后,圖片的命名已經不連續(xù)了,需要對其后面的需要按順序進行排列 。
再運行完os庫的代碼后,文件名已經變成連續(xù)的了。
如下圖:

OS庫的方法
os.listdir(path)--查看路徑下的所有文件os.rename(舊文件名,新文件名)--用于更改文件名字os.mkdir(path)-在path路徑下創(chuàng)建目錄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)把每一個文件取出后再通過此函數,保存至新的文件名,通過在其外層添加循環(huán)以此來達到批量修改文件名的效果。
代碼如下:
def renamefile_cv(path,imgPath):
import cv2
import os
file_lst = os.listdir(path)
frame_count=0 #起始的文件名名字 后續(xù)加了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,跳過本文件,繼續(xù)修改下一個文件名。
下面是升級后的代碼:
def renamefile_cv(path,imgPath):
import cv2
import os
file_lst = os.listdir(path)
frame_count=0 #起始的文件名名字 后續(xù)加了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)總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方
本文主要介紹了Python?ModuleNotFoundError:?No?module?named?‘xxx‘可能的解決方案大全,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧Chat?Gpt<BR>2023-07-07
python中CURL 和python requests的相互轉換實現
本文主要介紹了python中CURL 和python requests的相互轉換實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-03-03

