2016-03-08 49 views
0

我是Python新手。 我必須抓取多個文件夾並檢查特定文件。如果此文件位於此文件夾中,則該文件夾的名稱將被添加到列表的末尾。之後,我想要自然排序文件夾的名稱。 我嘗試了natsort包的natsorted(filename),但不知何故,它沒有對列表進行排序。如何使用os.walk獲得的Python中的natsort對文件夾名稱進行排序?

我的代碼:

for dirName, subdirList, fileList in os.walk(folder): 
if mat_file in fileList: 
    input_path = dirName + r"\file.txt" 
    if os.path.isfile(input_path): 
     filename.append(str(dirName.strip(folder))) 

natsorted(filename) 
print filename 

folder是路徑的文件夾

我:

['1.1', '1.10', '1.2', '1.4', '1.6', '2.1', '2.10', '2.11', '2.12', '2.6'] 

我想:

['1.1', '1.2', '1.4', '1.6', '1.10', '2.1', '2.6', '2.10', '2.11', '2.12']

有沒有解決這個問題的方法?

回答

5

因爲natsortedsorted不發生變異一樣.sort()那份名單,你需要的natsorted(filename)返回值分配回filename變量,如:

filename = natsorted(filename) 
0

拆分每個版本字符串比較它作爲整數的列表:

filename.sort(鍵=拉姆達S:地圖(INT,s.split()) '')

0
def sort_key(x): 
    a, b = x.split('.') 
    return int(a), int(b) 

sorted(filename, key=sort_key) 
相關問題