Как получить все файлы каталога
-
os.listdir
для получения всех файлов в каталоге на Python -
os.walk
для получения всех файлов в каталоге на Python -
glob.glob
для получения всех файлов в каталоге на Python
Вы можете иметь как минимум 3 способа перечислить все файлы каталога на Python, используя функции Python os.listdir
, os.walk
и glob.glob
.
Ниже приведено презумпция этого руководства,
- Версия на Python - Python 3
- Имя пути
dirPath
и он существует в системе, поэтому нам не нужно будет проверять существование каталога.
os.listdir
для получения всех файлов в каталоге на Python
os.listdir
перечисляет все файлы и папки в каталоге, поэтому ему нужен дополнительный код для фильтрации файлов по результату.
import os
dirPath = r"C:\git\DelftStack\content"
result = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f))]
print(result)
os.listdir
возвращает только относительный путь к файлам или папкам со ссылкой на dirPath
, а функция os.path.isfile
нуждается в полном пути для проверки, является ли он файлом или нет, поэтому нам нужно использовать os.path.join
для объединения dirPath
и результатов os.listdir
, чтобы получить полный путь к файлам или путям.
os.walk
для получения всех файлов в каталоге на Python
os.walk
генерирует имена файлов в данной директории, проходя по дереву сверху вниз (по умолчанию) или снизу вверх. Он генерирует 3-кратное (dirpath
, dirname
, filenames
) имя файла каждый раз, когда он идет к каталогу в дереве (включая сам top).
Все файлы включены в кортеж для первого выхода os.walk
, поэтому Pythonic way is
import os
dirPath = r"C:\git\DelftStack\content"
result = next(os.walk(dirPath))[2]
print(result)
glob.glob
для получения всех файлов в каталоге на Python
Модуль glob
находит все патнаны, соответствующие заданному шаблону в соответствии с правилами, используемыми в оболочке Unix. Модуль glob.glob
возвращает список имен путей, которые соответствуют заданному шаблону. Путь к файлу имеет шаблон *.*
, который будет передан glob.glob
в качестве входного аргумента.
import glob
dirPathPattern = r"C:\git\DelftStack\content\*.*"
result = glog.glob(dirPathPattern)
print(result)
glob.glob
возвращает полный путь к C:\git\DelftStack\content\about.rst
.
Результат применения метода glob.glob
, как показано здесь, не может гарантировать, что это только файлы, потому что он только проверяет, совпадает ли имя пути с шаблоном, но не проверяет, является ли он файлом или каталогом.
Например, если каталог имеет шаблон имени типа test.test
, то этот каталог также включается в результат.
Если необходимо убедиться, что выходные данные содержат только файлы, то необходимо проверить их с помощью функции os.path.isfile
.