La forma más adecuada o sencilla es por medio de recursividad que si digo la verdad hasta hace 2 o 3 meses no tenia ni idea.
Hacerlo de forma iterativa es poco menos que cometer un suicidio, pero por supuesto es posible.
Yo en el algoritmo he ideado una combinación mixta de ambas, para recorrer hacia abajo he usado recursividad y para recorrer en lateral he usado la forma iterativa.
Código
# -*- coding: cp1252 -*- import os directorio = os.getcwd() lista = directorio f = open('listado.txt', 'w') directorio = directorio.split("\\") directorio = directorio[0] #print directorio os.chdir(directorio + "\\") def listado(): i = 0 archivos = os.listdir(directorio) while i <= len(archivos): if os.path.isfile(directorio+"\\"+archivos[i]) == True: f.write(directorio+"\\"+archivos[i]+"\n") else: subdirectorios(directorio+"\\"+archivos[i]) i +=1 def subdirectorios(direc): j=0 archivos=os.listdir(direc) while j < len(archivos): if os.path.isfile(direc+"\\"+archivos[j]) == True: f.write(direc+"\\"+archivos[j]+"\n") else: subdirectorios(direc+"\\"+archivos[j]) j+=1 listado() f.close()
Solo tiene un pequeño problema:
Citar
File "C:\Documents and Settings\Shrick\Mis documentos\Prog\Python\araña.py", line 35, in subdirectorios
subdirectorios(direc+"\\"+archivos[j])
File "C:\Documents and Settings\Shrick\Mis documentos\Prog\Python\araña.py", line 30, in subdirectorios
archivos=os.listdir(direc)
TypeError: listdir() argument 1 must be (buffer overflow), not str
subdirectorios(direc+"\\"+archivos[j])
File "C:\Documents and Settings\Shrick\Mis documentos\Prog\Python\araña.py", line 30, in subdirectorios
archivos=os.listdir(direc)
TypeError: listdir() argument 1 must be (buffer overflow), not str
Que es debido seguramente a la capacidad de la lista al poner todos los archivos porque tiene un límite y no se me ocurre una solución
