特定のディレクトリ内のすべてのディレクトリ、サブディレクトリ、およびファイルを一覧表示するスクリプトを作成しようとしています。
私はこれを試しました:
import sys, os
root = "/home/patate/directory/"
path = os.path.join(root, "targetdirectory")
for r, d, f in os.walk(path):
for file in f:
print(os.path.join(root, file))
残念ながら、正しく動作しません。すべてのファイルは取得できますが、完全なパスは取得できません。
たとえば、ディレクトリ構造が次のようになるとします。
/home/patate/directory/targetdirectory/123/456/789/file.txt
次のように印刷されます:
/home/patate/directory/targetdirectory/file.txt
最初の結果が必要です。
ベストアンサー1
ディレクトリとファイル名os.path.join
を連結するために使用します:
import os
for path, subdirs, files in os.walk(root):
for name in files:
print(os.path.join(path, name))
連結ではpath
と を使用しないことに注意してください。 を使用すると誤りになります。root
root
Python 3.4 では、パス操作を容易にするためにpathlibモジュールが追加されました。したがって、同等のものは次のos.path.join
ようになります。
pathlib.PurePath(path, name)
の利点は、pathlib
パスに対してさまざまな便利なメソッドを使用できることです。具体的なバリアントを使用すると、Path
ディレクトリへの変更、パスの削除、パスが指すファイルのオープンなど、実際の OS 呼び出しも実行できます。