在實際的算法與程序開發(fā)中,經(jīng)常需要面對的場景就是對同一目錄內(nèi)的文件進(jìn)行批量操作。
并且很多時候目錄中的文件明明是有規(guī)律的,同時希望程序在進(jìn)行處理時也是按照一定的順序進(jìn)行。
方法 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']
>>>
補(bǔ)充:python對目錄下的文件排序問題
1.按照時間來排序
def get_file_list(file_path):
dir_list = os.listdir(file_path)
if not dir_list:
return
else:
# 注意,這里使用lambda表達(dá)式,將文件按照最后修改時間順序升序排列
# 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ù)字,如果讀取文件的話,需要進(jìn)行處理(把文件后綴名‘屏蔽')
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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- Python入門基本操作列表排序用法詳解
- Python列表排序方法reverse、sort、sorted詳解
- Python列表排序 list.sort方法和內(nèi)置函數(shù)sorted用法
- Python 排序最長英文單詞鏈(列表中前一個單詞末字母是下一個單詞的首字母)
- Python要如何實現(xiàn)列表排序的幾種方法
- Python 列表排序詳解