2016-04-07 8 views
0
filter(os.path.isfile,os.listdir('DIRECTORY')) 

İade farklı sonuçlar (beklenmeyen)Uyuşmazlık

+1

da dizinin listesini görmek ister ve:

filter(lambda x: os.path.isfile(os.path.join(dir, x)), os.listdir("DIRECTORY")) 

Muhtemelen liste anlama kullanmak için bu durumda daha iyi olurdu: Bir lambda işlevini kullanabilirsiniz. – Hun

+0

Dizini dosyaya mı eklediniz? 'listdir (" \ path \ to \ dir \ ")' '[" file1.txt "," file2.dat ", ...]' gibi bir şey döndürecektir, sonra 'isfile (" \ path \ " \ dir \ file1.txt ") '. – Julien

cevap

0
os.listdir(path) #will return all content of that folder 


filter(os.path.isfile, os.listdir(path)) # will return only list of files 
filter(os.path.isdir, os.listdir(path)) # will return only list of directories 
0

os.listdir()değil yolu dahil do dosya adları listesini döndürür. Bu os.listdir("/home/zondo")["dir1", "file1", "file2"] verebilir anlamına gelir. Şimdi bu komutun yürütülmesinde dir1 olduğumuzu varsayalım. İlk olarak dir1'un var olup olmadığını görürüz. O kadar değil filter() sonraki hareket eder. Neden mevcut değil? Çünkü mutlak bir yol sağlamadık; göreceli bir yol sağladık. dir1'da bulunduğumuzdan, os.path.isfile(), /home/zondo/dir1/dir1'un bir dosya olup olmadığını görmektedir. Tabii ki değil; mevcut değil. Onunla yolunu vermelisin. Filtre nasıl uygulandığına

[x for x in os.listdir("DIRECTORY") if os.path.isfile(os.path.join(dir, x))] 
İlgili konular