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