Me gustaría saber si es posible forzar que os.walk en python3 visite los directorios en orden alfabético. Por ejemplo, aquí es un directorio y un código que le guiará a este directorio:¿Puedo forzar que os.walk de python3 visite los directorios en orden alfabético? ¿cómo?
ryan:~/bktest$ ls -1 sample
CD01
CD02
CD03
CD04
CD05
--------
def main_work_subdirs(gl):
for root, dirs, files in os.walk(gl['pwd']):
if root == gl['pwd']:
for d2i in dirs:
print(d2i)
Cuando el código Python golpea el directorio anterior, aquí está la salida:
ryan:~/bktest$ ~/test.py sample
CD03
CD01
CD05
CD02
CD04
me gustaría forzar a pie para visitar estos directorios en orden alfabético, 01, 02 ... 05
. En el python3 doc for os.walk
, que dice:
Cuando arriba hacia abajo es cierto que la persona que llama puede modificar la lista dirnames en el lugar (tal vez usando del o cesión rebanada), y caminar() sólo Recurse en los subdirectorios cuyos los nombres permanecen en dirnames; esto se puede utiliza para podar la búsqueda, imponer un orden específico de visitar
¿Eso significa que puedo imponer un orden alfabético en visitar os.walk
? ¿Si es así, cómo?
entonces, eso es bastante asombroso. Pensé que lo único que podrías hacer con los generadores fue iterar sobre ellos. –
@ryan_m: Ese * es * todo lo que puede hacer. Pero dado que el siguiente paso en la iteración no se genera hasta que haya terminado con el primero, permite trucos como este. :-) –
buen truco! :-) ~ –