2010-08-26 75 views
0

我有許多包含類似於下面的例子中的文件目錄:的目錄內容自定義排序

test 
setup 
adder 
hello 
_CONFIG 
TEST2 

在這些目錄中帶有前綴_文件(縣)代表意義的配置文件。其目的是讓這些文件首先出現在我列出的目錄也就是我想應設有:

_CONFIG 
TEST2 
adder 
hello 
setup 
test 

不過,我使用

for element in sorted(os.listdir(path)): 
    print(element) 

,這提供了在那裏的文件啓動列表以大寫字母列出的前綴_上面的文件:

TEST2 
_CONFIG 
adder 
hello 
setup 
test 

反正這周圍有沒有它的第一個字符,打印seperately濾波過程中每個文件,因爲這似乎是矯枉過正。

謝謝

湯姆

回答

2
sorted(..., key = lambda s: (not s.startswith("_"), s)) 
+0

太好了,謝謝!提供我所需要的。 – Thorsley 2010-08-27 07:14:06

0
for element in sorted(os.listdir(path), key=lambda x:x.replace('_', ' ')): 
    print(element) 
+0

哈克:靠的不是含有開始 「」 任何串名單上。這是不能保證的,至少不能在Windows上。 – katrielalex 2010-08-26 15:42:58

+0

key = lambda x:x.replace('_','\ x00')應該照顧那個問題... – Steven 2010-08-26 16:14:48

+1

@katrielalex:一點也不,它只是在排序時使空間等同於空間,這是有道理的對我來說。 – 2010-08-26 17:39:08