Как я могу перечислить содержимое каталога в Python? - PullRequest
150 голосов
/ 03 мая 2010

Не может быть трудно, но у меня психическое расстройство.

Ответы [ 8 ]

215 голосов
/ 03 мая 2010
import os
os.listdir("path") # returns list
46 голосов
/ 03 мая 2010

В одну сторону:

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

Другой способ :

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

Примеры найдены здесь .

Приведенный выше метод glob.glob не выведет список скрытых файлов.

Так как я первоначально ответил на этот вопрос несколько лет назад, pathlib был добавлен в Python. Мой предпочтительный способ перечисления каталога теперь обычно включает метод iterdir для Path объектов:

from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
34 голосов
/ 03 мая 2010

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 голосов
/ 03 мая 2010

glob.glob или os.listdir сделает это.

13 голосов
/ 03 мая 2010

Модуль os обрабатывает все эти вещи.

os.listdir(path)

Возвращает список, содержащий имена записей в каталоге, заданных путем. Список в произвольном порядке. Он не включает специальные записи "." а также '..', даже если они присутствуют в каталоге.

Доступность: Unix, Windows.

3 голосов
/ 18 ноября 2018

Начиная с Python 3.5, вы можете использовать os.scandir.

Разница в том, что он возвращает файл записей , а не имена. В некоторых ОС, таких как Windows, это означает, что вам не нужно os.path.isdir/file знать, файл это или нет, и это экономит время ЦП, потому что stat уже выполнено при сканировании директории в Windows:

пример, чтобы вывести список каталогов и распечатать файлы размером более max_value байт:

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

(читайте подробный мой основанный на характеристиках ответ здесь )

3 голосов
/ 08 мая 2018

В Python 3.4+ вы можете использовать новый пакет pathlib:

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

Path.iterdir() возвращает итератор, который можно легко превратить в list:

contents = list(Path('.').iterdir())
2 голосов
/ 21 июля 2017

Ниже кода будут перечислены каталоги и файлы в каталоге. Другой - 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...