2011-03-24 13 views
13

Estoy empezando con Python pero ya lo he encontrado mucho más productivo que las secuencias de comandos de shell Bash.Programa de Python para recorrer directorios y leer información de archivos

Estoy tratando de escribir un script en Python que recorrerá todos los directorios que se ramifica desde el directorio de inicio el guión, y para cada archivo que encuentra, cargar una instancia de esta clase:

class FileInfo: 

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

El atributo de ruta de archivo sería la ruta absoluta completa desde la raíz (/). Aquí está la maqueta pseudocódigo para lo que me gustaría el programa principal que hacer:

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 

He estado leyendo sobre os.walk() y ok.path.walk(), pero me gustaría algún consejo sobre cuál sería la forma más directa de implementar esto en Python. Gracias por adelantado.

+0

¿A dónde quiere asignar el objeto creado? Esto parece ser trivial. – Ofir

Respuesta

17

que haría uso de os.walk haciendo lo siguiente: ". "

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

Usa snake_case en lugar de CamelCase para Python. – franka

7

Trate

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

o

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

para obtener una lista de uno FileInfo ejemplo por archivo.

1

Inténtelo

import os

de producto en os.walk (" * "):

 print item 
Cuestiones relacionadas