1

os.walk()を使用してディレクトリをウォークスルーしようとしています。私の現在の実装は次のとおりです。

print(".:")
for dirname, dirnames, filenames in os.walk(path):
    for filename in filenames:
        print(os.path.join(dirname, filename))
    print()
    for subdirname in dirnames:
        print(os.path.join(dirname, subdirname) + ":")

「パス」については、次の出力が得られます。

.:
./File5.py
./File 3.py
./File 1.py

./directory 2:
./directory 4:
./Test Directory:
./directory 2/player_career.csv
./directory 2/File2.py

./directory 4/test.txt
./directory 4/Homework4.py

./directory 4/__pycache__:
./directory 4/__pycache__/File4.cpython-32.pyc


./Test Directory/Test 3:
./Test Directory/Test 2:
./Test Directory/Test 3/ttt

./Test Directory/Test 2/Untitled Document 2
./Test Directory/Test 2/Untitled Document

./Test Directory/Test 2/Untitled Folder:
./Test Directory/Test 2/Untitled Folder/jjj

そして私が探している出力は次のとおりです。

.:
./File5.py
./File 3.py
./File 1.py

./directory 2:

./directory 2/player_career.csv
./directory 2/File2.py

./directory 4:

./directory 4/test.txt
./directory 4/Homework4.py

./directory 4/__pycache__:

./directory 4/__pycache__/File4.cpython-32.pyc

./Test Directory:

./Test Directory/Test 2:

./Test Directory/Test 2/Untitled Document 
./Test Directory/Test 2/Untitled Document 2

./Test Directory/Test 2/Untitled Folder:

./Test Directory/Test 2/Untitled Folder/jjj

./Test Directory/Test 3:

./Test Directory/Test 3/ttt

これを再帰的に実行すると、見つかったサブディレクトリごとに関数を呼び出すことができますが、os.walk()を使用してそれを行うための洗練された方法を見つけるのに苦労しています。

私の質問:os.walk()を使用して上記の出力を取得するにはどうすればよいですか?

4

1 に答える 1

8

サブディレクトリをすぐに印刷するのではなく、実際にそのディレクトリにいるときに印刷します。

例:

for dirname, dirnames, filenames in os.walk(path):
    print()
    print(dirname + ":")
    for filename in filenames:
        print(os.path.join(dirname, filename))

ディレクトリ名を取得したos.walk直後にすべてのディレクトリ名を出力しようとすると、dirnames必要な順序が得られません。

于 2012-10-26T06:20:45.593 に答える