Pythonでディレクトリの内容を一覧表示するにはどうすればよいですか?


回答:



52

一方通行:

import os
os.listdir("/home/username/www/")

別の方法

glob.glob("/home/username/www/*")

ここに例があります

上記のglob.glob方法では、隠しファイルはリストされません。

私が最初にこの質問に最初に回答してから、pathlibがPythonに追加されました。ディレクトリをリストするための私の好ましい方法は、通常iterdirPathオブジェクトに対するメソッドを含みます:

from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")

glob.globで隠しファイル(.XYZUnixファイルシステムコンテキスト内のファイルを意味すると思います)を一覧表示しますglob.glob("/home/username/www/.*")か?
アンディフィンケンシュタット

はい、ドットで始まるファイルを意味します。あなたが与えた例は、隠しファイル(および隠しファイルのみ)を照合するために機能します。
Trey Hunner、2012

globをインポートしてglob.glob(r'c:\ users ')を使用しましたが、それだけが返されました['c:\\users']
Musixauce3000

1
@ Musixauce3000:実行する必要がありますglob.glob(r'c:\users\*')(globは実際にはディレクトリをリストしませんが、アスタリスクなどを展開して同様のタスクを実行します)。
Trey Hunner

38

os.walk 再帰が必要な場合に使用できます。

import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
    for filename in files:
        print os.path.join(path,filename)

18

glob.globまたはそれos.listdirを行います。


import globENTER glob.glob(r'c:\users')ENTERは戻るよう['c:\\users']です。何故ですか?glob.globを使用したいのは、他のユーザーが指摘したように、隠しファイルも無視して、ディレクトリの内容を返すと考えられるためです。これは重要。
Musixauce3000 2016

あなたは、ワイルドカードで指定する必要があるためglobglob.glob(r'c:\users\*')
ジャン=フランソワ・ファーブル

14

osモジュールのハンドルすべてのもの。

os.listdir(path)

パスで指定されたディレクトリ内のエントリの名前を含むリストを返します。リストは任意の順序です。特別なエントリ「。」は含まれません。および「..」は、それらがディレクトリに存在する場合でも使用されます。

利用できる環境:Unix、Windows。


4

Python 3.4以降では、新しいpathlibパッケージを使用できます。

from pathlib import Path
for path in Path('.').iterdir():
    print(path)

Path.iterdir()簡単にaに変換できるイテレータを返しますlist

contents = list(Path('.').iterdir())

3

Python 3.5以降では、を使用できますos.scandir

違いは、名前ではなくファイルエントリを返すことです。Windowsのような一部のOSでは、それos.path.isdir/fileがファイルかどうかを知る必要がないことを意味します。これはstat、Windowsでdirをスキャンするときにすでに行われているため、CPU時間を節約できます。

ディレクトリをリストしてmax_valueバイトよりも大きいファイルを出力する例:

for dentry in os.scandir("/path/to/dir"):
    if dentry.stat().st_size > max_value:
       print("{} is biiiig".format(dentry.name))

ここで私のパフォーマンスベースの広範な答えを読んでください


2

以下のコードは、ディレクトリとディレクトリ内のファイルをリストします。もう1つはos.walkです。

def print_directory_contents(sPath):
        import os                                       
        for sChild in os.listdir(sPath):                
            sChildPath = os.path.join(sPath,sChild)
            if os.path.isdir(sChildPath):
                print_directory_contents(sChildPath)
            else:
                print(sChildPath)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.