2016-03-21 22 views
0

Python'daki bir dosya için, veya bulunmayan tüm alt dizinler dahil olmak üzere dizinini aramak istiyorum.Python'daki bir dosya için var olabilecek veya bulunmayan tüm alt dizinler dahil bir dizini arayın.

os.path.exists(/dir1/myfile.pdf) 

... ama istediğiniz dosya bazı keyfi alt dizininde yer alıyorsa benim yaptığım o ne değildir:

ben gibi biz içine atmayı dizin bilinmektedir çokça örnek görmek zaten var mı var değil mi? Örneğin, yukarıda pasajı burada bir dosyayı bulamaz:

/dir1/dir2/dir3/.../dir20/myfile.pdf

ve açıkça bunu açık şekilde çalıştırmadan genelleme asla Satır 20 kere, her dizin için bir kez.

Sanırım, dosya sisteminin tam yapısını bilmediğim bir yineleme araması arıyorum (eğer doğru söylediysem). @idjaw önerdiği gibi

+0

[os.walk] gördünüz mü (https://docs.python.org/3/library/os.html#os.walk)? Bu ihtiyaçlarınızı karşılamıyor mu? – idjaw

cevap

1

, şöyle os.walk() deneyin:

İşte
import os 
import os.path 

for (dir,subdirs,files) in os.walk('/dir1'): 
    # Don't go into the CVS subdir! 
    if 'CVS' in subdirs: 
     subdirs.remove('CVS') 

    if 'myfile.pdf' in files: 
     print("Found:", os.path.join(dir, 'myfile.pdf')) 
0

bir dosyayı bulmak kod do (benim durumda "wsgi.py" olarak) pwd altında

import os 
    for root, dirs, files in os.walk('.'): 
     if "wsgi.py" in files: 
      print root 


./jg18/blog/blog 
./goat/superlists/superlists 
./jcg_blog/jcg_blog 
./joelgoldstick.com.16/blog/blog 
./blankdj19/blank/blank 
./cp/cpblog/cpblog 
./baseball/baseball_stats/baseball_stats 
./zipcodes/zipcodes/zipcodes 
./django.1.6.tut/mysite/mysite 
./bits/bits/bits 

ise dosya sadece bir dir var, bir dizin listeleyecektir o bir dizin listeleyecektir

İlgili konular