1. ホーム
  2. python

[解決済み] Python のディレクトリ、サブディレクトリ、およびファイルの一覧表示

2022-04-22 08:54:12

質問

指定されたディレクトリ内のすべてのディレクトリ、サブディレクトリ、およびファイルをリストアップするスクリプトを作ろうとしています。

こんなことをやってみました。

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)

残念ながら正常に動作しません。

すべてのファイルを取得しますが、その完全なパスは取得できません。

例えば、dir 構造体が以下のような場合。

/home/patate/directory/targetdirectory/123/456/789/file.txt

プリントされるのです。

/home/patate/directory/targetdirectory/file.txt

私が必要とするのは、最初の結果です。どんな助けでも大いに結構です! ありがとうございます。

どのように解決するのですか?

使用方法 os.path.join を連結して ディレクトリ とファイル 名前 :

for path, subdirs, files in os.walk(root):
    for name in files:
        print(os.path.join(path, name))

の使い方に注意してください。 path であって root を使用するため、連結に root は正しくありません。


Python 3.4では パスリブ モジュールが追加され、パス操作が容易になりました。そのため os.path.join となります。

pathlib.PurePath(path, name)

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