Python 如何獲取目錄下的文件列表,并自然排序
在實際的算法與程序開發(fā)中,經(jīng)常需要面對的場景就是對同一目錄內(nèi)的文件進行批量操作。
并且很多時候目錄中的文件明明是有規(guī)律的,同時希望程序在進行處理時也是按照一定的順序進行。
方法 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() 函數(shù)是獲取文件最后修改時間 # os.path.getctime() 函數(shù)是獲取文件最后創(chuàng)建時間 dir_list = sorted(dir_list,key=lambda x: os.path.getmtime(os.path.join(file_path, x))) # print(dir_list) return dir_list
2.獲取最后修改時間的文件路徑
import os url='D:\PycharmProjects\Ambulance_Api\logs' 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)用庫函數(shù)sorted()對字符串排序,它的對象是字符
2)用函數(shù)sort()對數(shù)字排序,它的對象是數(shù)字,如果讀取文件的話,需要進行處理(把文件后綴名‘屏蔽')
import os img_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函數(shù)中用到了匿名函數(shù)(key = lambda x:int(x[:-4])),其作用是將后綴名'.jpg'“屏蔽”(因為‘.jpg'是4個字符,所以[:-4]的含義是從文件名開始到倒數(shù)第四個字符為止)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python獲取CPU、內(nèi)存使用率以及網(wǎng)絡(luò)使用狀態(tài)代碼
這篇文章主要介紹了Python獲取CPU使用率、內(nèi)存使用率、網(wǎng)絡(luò)使用狀態(tài)的相關(guān)代碼,對此有需要的朋友一起測試下。2018-02-02Python實現(xiàn)設(shè)置windows桌面壁紙代碼分享
這篇文章主要介紹了Python實現(xiàn)設(shè)置windows桌面壁紙,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下2015-03-03python enumerate函數(shù)的使用方法總結(jié)
這篇文章主要介紹了python enumerate使用方法總結(jié),enumerate函數(shù)用于遍歷序列中的元素以及它們的下標,有興趣的可以了解一下2017-11-11Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化
這篇文章主要介紹了Pytorch如何把Tensor轉(zhuǎn)化成圖像可視化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12Python selenium抓取微博內(nèi)容的示例代碼
本篇文章主要介紹了Python selenium抓取微博內(nèi)容的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05