Chciałbym wiedzieć, czy można zmusić os.walk w python3 do odwiedzenia katalogów w porządku alfabetycznym. Na przykład, tutaj jest katalogiem, a niektóre kod, który poprowadzi ten katalog:Czy mogę zmusić os.walk Pythona do odwiedzenia katalogów w kolejności alfabetycznej? w jaki sposób?
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)
Gdy kod Pythona uderza katalogu wyżej, tu jest wyjście:
ryan:~/bktest$ ~/test.py sample
CD03
CD01
CD05
CD02
CD04
Chciałbym wymusić spacer do odwiedzenia tych katalogów w porządku alfabetycznym, 01, 02 ... 05
. W python3 doc for os.walk
, to mówi:
Kiedy topdown to prawda, że dzwoniący może modyfikować listę dirnames w miejscu (być może przy użyciu del lub przypisanie Slice) oraz spacer() będzie tylko recurse do podkatalogów, których imiona pozostają w nazwiskach; ten może być stosowany do przycinać wyszukiwanie, narzucać konkretnej kolejności zwiedzania
Czy to znaczy, że mogę nałożyć alfabetyczna odwiedzając os.walk
? Jeśli tak to jak?
, więc to całkiem niesamowite. Myślałem, że jedyną rzeczą, którą możesz zrobić z generatorami, jest ich powtarzanie. –
@ryan_m: To * jest * wszystko, co możesz zrobić. Ale ponieważ następny krok w iteracji nie jest generowany, dopóki nie skończysz z pierwszym, pozwala to na takie sztuczki. :-) –
fajny hack! :-) ~ –