2011-03-24 18 views
13

Python ile çalışmaya başladım ancak Bash kabuk betiğinden çok daha üretken buldum.Python programı dizinleri çaprazlamak ve dosya bilgilerini okumak için

ben dizinden dalları içinde senaryoyu başlatmak her dizin çapraz geçiş olacak bir Python senaryo yazmaya çalışıyorum, karşılaştığı her dosya için, bu sınıfın bir örneğini yüklemek ediyorum:

class FileInfo: 

    def __init__(self, filename, filepath): 
     self.filename = filename 
     self.filepath = filepath 

Dosya yolu özniteliği, kökten tam yoldur (/). İşte yapmak ana programı istiyorum ne için yalancı kod mockup var:

from (current directory): 

    for each file in this directory, 
    create an instance of FileInfo and load the file name and path 

    switch to a nested directory, or if there is none, back out of this directory 

I (os.walk hakkında okuma) ve ok.path.walk() oldum, ama tavsiyeye istiyorum Bunu Python'da gerçekleştirmenin en basit yolunun ne olacağı hakkında. Şimdiden teşekkürler.

+0

Nereye için oluşturulan nesneyi atamak istiyoruz? Bu, aksi halde önemsiz gibi görünüyor. – Ofir

cevap

17

ben aşağıdakileri yaparak os.walk kullanılır: " "dene.

def getInfos(currentDir): 
    infos = [] 
    for root, dirs, files in os.walk(currentDir): # Walk directory tree 
     for f in files: 
      infos.append(FileInfo(f,root)) 
    return infos 
+0

Python için CamelCase yerine snake_case kullanın. – franka

7

dosyanın başına bir FileInfo örneğinin bir listesini almak için

info = [] 
for path, dirs, files in os.walk("."): 
    info.extend(FileInfo(filename, path) for filename in files) 

veya

info = [FileInfo(filename, path) 
     for path, dirs, files in os.walk(".") 
     for filename in files] 

deneyin.

1

o

ithalat os

os.walk öğenin (için

," * "):

 print item 
İlgili konular