Как получить все файлы каталога

  1. os.listdir для получения всех файлов в каталоге на Python
  2. os.walk для получения всех файлов в каталоге на Python
  3. glob.glob для получения всех файлов в каталоге на Python

Вы можете иметь как минимум 3 способа перечислить все файлы каталога на Python, используя функции Python os.listdir, os.walk и glob.glob.

Ниже приведено презумпция этого руководства,

  1. Версия на Python - Python 3
  2. Имя пути 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.md.

Предупреждение

Результат применения метода glob.glob, как показано здесь, не может гарантировать, что это только файлы, потому что он только проверяет, совпадает ли имя пути с шаблоном, но не проверяет, является ли он файлом или каталогом.

Например, если каталог имеет шаблон имени типа test.test, то этот каталог также включается в результат.

Если необходимо убедиться, что выходные данные содержат только файлы, то необходимо проверить их с помощью функции os.path.isfile.

Сопутствующая статья - Python file-path

  • Как удалить файл и каталог на Python
  • Как проверить, существует ли файл на Python
  • Как найти файлы с определенным расширением только на Python
  • comments powered by Disqus