私はmutagen libraryを使って簡単なスクリプトを書いています。これは、フォルダ内のオーディオファイルの量とフォルダ全体のオーディオ再生時間(サブフォルダからのオーディオファイルを含む)をカウントします。os.walk()は同じフォルダを2回訪問する
いくつかのテストの後、私のスクリプトはいくつかのフォルダを2回訪れていることがわかりました。通常、これらのディレクトリは別のサブフォルダのサブフォルダです。その結果として、それは結果のこの種を出力します。
$ python3 music_scan.py
Library: ~/Music/
Amount of audio files: 3520
Total playing time:
Days Hours Min Sec
9 7 30 26
しかし、現実には、あなたが一つのフォルダにすべてのオーディオトラックを移動し、そのテスト・フォルダにスクリプトを実行する場合、それは異なる結果を示しています。確かに
$ python3 music_scan.py ~/test
Library: ~/test/
Amount of audio files: 885
Total playing time:
Days Hours Min Sec
2 15 49 9
量テストフォルダ内のオーディオトラック数は885でした。私はls | wc -l
コマンドでそれをチェックしました なぜos.walk()はいくつかのサブフォルダを2回訪問しますか?
あなたは 'for f'ファイルと' d in dirs'を持っています。これは確かに同じファイルを訪れます。これらのループの1つは必要ありません。 – DyZ
os.walk()のドキュメントでは、ディレクトリツリーを移動するとは言えませんか?だからなぜあなたは "d in dirs"のためにやっているのですか? – Mike
一部のフォルダには、ファイルを含むファイルとフォルダが含まれています。私が知っている限り、 'files'にはサブフォルダからのファイルは含まれていませんが、ファイル自体にはファイル名だけが含まれています。だから私も再帰的にサブフォルダを訪問する必要がありますか?それとも私は何かを誤解していますか? – xbound