os.walk
を使用しos.listdir
ます。のドキュメント文字列は次のとおりですos.listdir
。
listdir(パス) -> list_of_strings
ディレクトリ内のエントリの名前を含むリストを返します。
path: path of directory to list
リストは任意の順序です。特別なエントリ「.」は含まれません。および「..」は、ディレクトリに存在する場合でも。
(私の強調)。
ただし、sort
希望する順序を確保するために使用できます。
for root, dirs, files in os.walk(path):
for dirname in sorted(dirs):
print(dirname)
(dirnames は int ではなく文字列であるためsorted(dirs)
、文字列としてソートすることに注意してください。
Alfe と Ciro Santilli が指摘しているように、ディレクトリをソート順に再帰させたい場合はdirs
、 in-placeを変更します。
for root, dirs, files in os.walk(path):
dirs.sort()
for dirname in dirs:
print(os.path.join(root, dirname))
これを自分でテストできます:
import os
os.chdir('/tmp/tmp')
for dirname in '1 10 11 12 2 20 21 22 3 30 31 32'.split():
try:
os.makedirs(dirname)
except OSError: pass
for root, dirs, files in os.walk('.'):
for dirname in sorted(dirs):
print(dirname)
版画
1
10
11
12
2
20
21
22
3
30
31
32
それらを番号順にリストしたい場合は、次を使用します。
for dirname in sorted(dirs, key=int):
英数字文字列を並べ替えるには、自然な並べ替えを使用します。