Как я могу перечислить содержимое каталога в Python?

Не могу быть жестким, но у меня есть ментальный блок.

Ответ 1

import os
os.listdir("path") # returns list

Ответ 2

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

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

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

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

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

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

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

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

Ответ 3

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)

Ответ 4

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

Ответ 5

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

os.listdir(path)

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

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

Ответ 6

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

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

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

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

Ответ 7

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

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

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

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

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

Ответ 8

Ниже приведен список каталогов и файлов в каталоге. Другой - 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)