Python 如何獲取目錄下的文件列表,并自然排序
在實際的算法與程序開發中,經常需要面對的場景就是對同一目錄內的文件進行批量操作。
并且很多時候目錄中的文件明明是有規律的,同時希望程序在進行處理時也是按照一定的順序進行。
方法 1>>> import os>>> fileList = os.listdir(’TestDir’)>>> fileList[’test1.txt’, ’test10.txt’, ’test11.txt’, ’test2.txt’, ’test23.txt’, ’test28.txt’]>>> fileList.sort(key= lambda x:int(x[4:-4]))>>> fileList[’test1.txt’, ’test2.txt’, ’test10.txt’, ’test11.txt’, ’test23.txt’, ’test28.txt’]>>>方法 2
>>> import os>>> import natsort>>> fileList = os.listdir(’TestDir’)>>> fileList[’test1.txt’, ’test10.txt’, ’test11.txt’, ’test2.txt’, ’test23.txt’, ’test28.txt’]>>> fileList = natsort.natsorted(fileList)>>> fileList[’test1.txt’, ’test2.txt’, ’test10.txt’, ’test11.txt’, ’test23.txt’, ’test28.txt’]>>>
補充:python對目錄下的文件排序問題
1.按照時間來排序def get_file_list(file_path): dir_list = os.listdir(file_path) if not dir_list:return else:# 注意,這里使用lambda表達式,將文件按照最后修改時間順序升序排列# os.path.getmtime() 函數是獲取文件最后修改時間# os.path.getctime() 函數是獲取文件最后創建時間dir_list = sorted(dir_list,key=lambda x: os.path.getmtime(os.path.join(file_path, x)))# print(dir_list)return dir_list2.獲取最后修改時間的文件路徑
import osurl=’D:PycharmProjectsAmbulance_Apilogs’lists=os.listdir(url)print(lists)lists.sort(key=lambda fn: os.path.getmtime(url+’’+fn))filepath=os.path.join(url,lists[-1])print(filepath)3.按照文件名字來排序
1)用庫函數sorted()對字符串排序,它的對象是字符
2)用函數sort()對數字排序,它的對象是數字,如果讀取文件的話,需要進行處理(把文件后綴名‘屏蔽’)
import osimg_path =’./img/’img_list =sorted(os.listdir(img_path)) #文件名按字母排序img_nums =len(img_list)for i in range(img_nums):img_name = img_path + img_list[i]print(img_name)
sort函數中用到了匿名函數(key = lambda x:int(x[:-4])),其作用是將后綴名’.jpg’“屏蔽”(因為‘.jpg’是4個字符,所以[:-4]的含義是從文件名開始到倒數第四個字符為止)
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。