2011-04-07 108 views

回答

0
import operator 

for fn in os.listdir(path): 

    if fn[0] == '.': 
     continue 

    try: 
     p = os.path.join(path, fn) 
    except: 
     continue 

    s = os.lstat(p) 

    if stat.S_ISDIR(s.st_mode): 
     l.append((fn, build_tree(p))) 
    elif stat.S_ISREG(s.st_mode): 
     l.append((fn, s.st_size)) 

對於升序排序:

l.sort(key=operator.itemgetter(1)) 

對於降序排序:

l.sort(key=operator.itemgetter(1), reverse=True) 
+0

最後一行爲我做。對於反向排序,我做了:l.sort(key = operator.itemgetter(1),reverse = True) – mhs 2011-04-07 04:11:30

+0

很高興幫助,我在答案中添加了兩種方法。 – Raisen 2011-04-07 04:23:05

12

的一種方式

>>> import operator 
>>> import os 
>>> getall = [ [files, os.path.getsize(files)] for files in os.listdir(".") ] 
>>> sorted(getall, key=operator.itemgetter(1)) 
6

使用排序是最有效和最標準的方法。

上升:

sorted_list = sorted(files, key=os.path.getsize) 

sorted_list = sorted(files, key=os.path.getsize, reverse=True) 
相關問題