()今天要解決昨天出現(xiàn)的遞歸程序在沒有獲取當(dāng)前文件夾下所有文件的大小便直接跳進(jìn)子文件夾從而遺漏文件的BUG。
想到可以把當(dāng)前文件夾中的文件和子文件夾進(jìn)行排序在刺,把所有文件都放在子文件夾的前面萎胰,這樣程序就可以避免程序過早地進(jìn)入子文件夾钝尸。
昨天寫了排序的語(yǔ)句作烟,但是不知道為什么達(dá)不到目的振湾。重新寫了一個(gè)排序的函數(shù)球涛,發(fā)現(xiàn)只輸出了一個(gè)文件魄梯,仔細(xì)程序發(fā)現(xiàn),在每一次for循環(huán)后宾符,count,ordered都被清空酿秸,所以最后結(jié)果只打印出一個(gè)文件。
修改變量聲明在for之前魏烫,發(fā)現(xiàn)可以實(shí)現(xiàn)把子文件夾排列到最后的目的辣苏。
據(jù)此肝箱,發(fā)現(xiàn)昨天的程序也是錯(cuò)在這里。修改之后稀蟋,得到所有文件的大小煌张,保存在字典中。
得到字典后退客,下一步就是根據(jù)字典的值骏融,對(duì)鍵排序。
自己寫的遍歷字典排序的程序萌狂,總是出錯(cuò)档玻,網(wǎng)上找了按照字典的值排序的方法,成功茫藏。
在這個(gè)過程中误趴,要注意的是,sorted()對(duì)字典操作之后务傲,字典中的順序仍然不變凉当,只是sorted()的返回值中排序改變。
lambda為匿名函數(shù)售葡,x,y相當(dāng)于傳入的參數(shù)看杭,整個(gè)函數(shù)會(huì)返回x-y的值。lambda作為一個(gè)表達(dá)式挟伙,定義了一個(gè)匿名函數(shù)泊窘。代碼中x,y為入口參數(shù)像寒,x-y為函數(shù)體。在這里lambda簡(jiǎn)化了函數(shù)定義的書寫形式瓜贾。
對(duì)sorted中的 key = lambda x:x[1]不理解诺祸,嘗試元組例子:
發(fā)現(xiàn)key = lambda x:x[1]只是表達(dá)一個(gè)索引,即表示按照被排序的對(duì)象的第幾個(gè)元素排序祭芦。如x:x[0]筷笨,則是對(duì)字典中的'鍵'排序;
x:x[1]龟劲,則是對(duì)字典中的'值'排序胃夏。
列表list中居然還可以保存元組turple:
成功實(shí)現(xiàn)打印:
元組: