python如何按照自己順序讀出文件名
情景再現(xiàn)
在做一個批量讀取文件夾txt文件內(nèi)容后,將文件內(nèi)容寫入excel表格的簡單腳本時使用到了os.listdir()函數(shù)。
當(dāng)腳本完成后檢查excel表格內(nèi)容時發(fā)現(xiàn)表格內(nèi)容順序和txt文件順序不一樣,這就導(dǎo)致我剩下的工作全部GG(超級難受)。
然后就去著手解決python os.listdir()讀出順序亂序問題。
為什么os.listdir()讀出會亂序?
我也不知道,那位大佬知道了麻煩評論教教我!?。。。?/p>
解決亂序(即按照自己的要求排序)
首先看一般情況下讀出順序:
files= os.listdir(path) #得到文件夾下的所有文件名稱
讀出的文件順序是:
而在文件夾中所顯示的文件排列順序確實這樣的:
這個順序是不是很讓人摸不到頭腦。
該怎么按照我們想要的順序排列呢?
我后來想一想,這讀出來的文件名字不就一列表嘛,我們把這個列表按我們想要的順序排列好不就可以啦。
我們可以看到文件夾中的排序方式是先按照cache后的數(shù)字排序然后再按照第五個字母 a,b,s排序。
所以我們就按照這個方式來排序。
def takeNumber(elem): #獲取cache后面的數(shù)字 pattern = re.compile('cache(.+).txt') num = int(pattern.findall(elem)[0]) return num
files= os.listdir(path) #得到文件夾下的所有文件名稱 txts = [] all_data = [] files.sort(key=takeNumber) files.sort(key= lambda x: x[4]) #lambda函數(shù)也叫匿名函數(shù),即,函數(shù)沒有具體的名稱
最后看結(jié)果就是我們想要的順序:
總結(jié)
總而言之,讀出文件的順序可以轉(zhuǎn)化為對列表的排序。這類排序沒有固定的方法,見招拆招,兵來將擋,水來土掩才是好辦法。
另外,對于正則表達(dá)式和lambda匿名函數(shù)也要有一定的了解才能做好(別問我是怎么知道的,菜雞落淚)。
以上僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python數(shù)據(jù)分析之聚類分析(cluster analysis)
聚類分析本身不是一個特定的算法,而是要解決的一般任務(wù)。它可以通過各種算法來實現(xiàn),這些算法在理解群集的構(gòu)成以及如何有效地找到它們方面存在顯著差異。這篇文章主要介紹了python數(shù)據(jù)分析之聚類分析(cluster analysis),需要的朋友可以參考下2021-11-11Python如何使用type()函數(shù)查看數(shù)據(jù)的類型
這篇文章主要介紹了Python如何使用type()函數(shù)查看數(shù)據(jù)的類型,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05在Python中預(yù)先初始化列表內(nèi)容和長度的實現(xiàn)
今天小編就為大家分享一篇在Python中預(yù)先初始化列表內(nèi)容和長度的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11