Python でディレクトリ、サブディレクトリ、ファイルをリストする 質問する

Python でディレクトリ、サブディレクトリ、ファイルをリストする 質問する

特定のディレクトリ内のすべてのディレクトリ、サブディレクトリ、およびファイルを一覧表示するスクリプトを作成しようとしています。

私はこれを試しました:

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と を使用しないことに注意してください。 を使用すると誤りになります。rootroot


Python 3.4 では、パス操作を容易にするためにpathlibモジュールが追加されました。したがって、同等のものは次のos.path.joinようになります。

pathlib.PurePath(path, name)

の利点は、pathlibパスに対してさまざまな便利なメソッドを使用できることです。具体的なバリアントを使用すると、Pathディレクトリへの変更、パスの削除、パスが指すファイルのオープンなど、実際の OS 呼び出しも実行できます。

おすすめ記事