Перейти к содержимому

Как посчитать количество файлов в директории python

  • автор:

Как посчитать количество объектов (файлов и папок) в папке?

Имееется ввиду использование класса Path() , но не обязательно.
Вот такое решение мне кажется громоздким. Нет ли чего-то изящнее?
Задача решалась 100500 раз, видно плохо гуглил.

from pathlib import Path folder_name = input("folder name:") folder = Path(folder_name) if folder.is_dir(): folder_count = len([1 for file in folder.iterdir()]) print(f"В папке есть объектов") 

Отслеживать

51.6k 201 201 золотой знак 63 63 серебряных знака 245 245 бронзовых знаков

Посчитать количество файлов определенного типа в заданной папке. Python

Ты никогда не знаешь, сколько файлов нужно пересчитать в папке, пока не столкнешься с этой задачей. Но теперь ты можешь облегчить свою работу с помощью нашей нейросети онлайн, которая самостоятельно посчитает количество файлов нужного типа в заданной папке. Больше не нужно тратить время на рутинные задачи — нейросеть пишет текст, а ты можешь заниматься своим творчеством. Попробуй прямо сейчас, и ты убедишься, насколько просто и удобно это.

Создать текст по запросам:

Как получить количество файлов в ТЕКУЩЕМ каталоге (где был запущен скрипт)?

Но как получить количество файлов в каталоге, откуда был запущен скрипт? Допустим, нужно будет запускать его с разных папок с большим количеством файлов, и он должен считать, сколько их там.
(Папки можно упустить. Интересуют только файлы.)

  • Вопрос задан более двух лет назад
  • 108 просмотров

Комментировать

Решения вопроса 2

import os path, dirs, files = next(os.walk(os.getcwd())) print(files) file_count = len(files) print(file_count)

Ответ написан более двух лет назад

Комментировать

Нравится 2 Комментировать

MinTnt

path, dirs, files = next(os.walk(«.»))

Ответ написан более двух лет назад

Комментировать

Нравится 2 Комментировать

Ответы на вопрос 0

Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Опять коги! Выдаёт ошибку, как её убрать?

  • 1 подписчик
  • 38 минут назад
  • 31 просмотр

python

  • Python
  • +1 ещё

Как заставить селениум просто открыть страницу и ждать?

  • 1 подписчик
  • 2 часа назад
  • 212 просмотров

Рекурсивное получение имен файлов по шаблону из дерева каталогов

Описанные ниже методы позволяют произвести рекурсивный обход дерева каталога и получить список файлов средствами модуля pathlib . Данные методы принадлежат экземпляру, созданному из класса Path() .

Так как класс pathlib.Path() наследуется от класса pathlib.PurePath() , следовательно он поддерживает все операции по манипуляции с путями файловой системы.

Содержание:

  • Выбрать файлы из каталога в соответствии с шаблоном,
  • Рекурсивный отбор файлов из каталога по шаблону,
  • Получение итератора содержимого каталога.
Path.glob(pattern, *, case_sensitive=None) :

Метод Path.glob() возвращает список всех файлов любого типа, соответствующий заданному шаблону pattern , расположенных в каталоге, указанном в пути path .

>>> from pathlib import Path >>> paths = sorted(Path('.').glob('*.py')) >>> paths # [PosixPath('pthlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')] # преобразуем в список строк list(map(str, paths)) # ['pthlib.py', 'setup.py', 'test_pathlib.py'] >>> path = sorted(Path('.').glob('*/*.py')) >>> path # [PosixPath('docs/conf.py')] # что бы преобразовать объект PosixPath в строку # просто передайте его в функцию str() >>> str(path) # 'docs/conf.py' 

Изменено в Python 3.11: возвращает только каталоги, если шаблон pattern заканчивается разделителем компонентов пути ( os.sep или os.altsep ).

Изменено в версии Python 3.12: Добавлен ключевой аргумент case_sensitivity . По умолчанию или когда аргументу case_sensitive присвоено значение None , этот метод сопоставляет пути, используя правила оформления, зависящие от конкретной платформы: как правило, с учетом регистра в POSIX и без учета регистра в Windows. Чтобы переопределить такое поведение, необходимо установить значение case_sensitive равным True или False .

Шаблоны pattern те же, что и для fnmatch , с добавлением «**» , что означает «этот каталог и все подкаталоги рекурсивно«. Другими словами, шаблон ‘**’ указывает на рекурсивный обход каталога в глубину, указанного в пути path , и всех его подкаталогов:

>>> from pathlib import Path >>> paths = sorted(Path('.').glob('**/*.py')) >>> paths # [PosixPath('build/lib/pathlib.py'), # PosixPath('docs/conf.py'), # PosixPath('pathlib.py'), # PosixPath('setup.py'), # PosixPath('test_pathlib.py')] # преобразуем в список строк >>> list(map(str, paths)) # ['build/lib/pathlib.py', # docs/conf.py, # pathlib.py, # 'setup.py' # 'test_pathlib.py'] 

Примечание. Использование шаблона ‘**’ в больших деревьях каталогов может занять слишком много времени.

Path.rglob(pattern, *, case_sensitive=None) :

Метод Path.rglob() работает подобно вызову метода Path.glob() с добавлением конструкции ‘**/’ перед заданным относительным шаблоном pattern , тем самым по умолчанию производит рекурсивный поиск файлов, соответствующих pattern :

>>> from pathlib import Path >>> sorted(Path().rglob("*.py")) # [PosixPath('build/lib/pathlib.py'), # PosixPath('docs/conf.py'), # PosixPath('pathlib.py'), # PosixPath('setup.py'), # PosixPath('test_pathlib.py')] 

Изменено в версии Python 3.11: возвращает только каталоги, если шаблон pattern заканчивается разделителем компонентов пути ( os.sep или os.altsep ).

Изменено в версии Python 3.12: Добавлен ключевой аргумент case_sensitivity . По умолчанию или когда аргументу case_sensitive присвоено значение None , этот метод сопоставляет пути, используя правила оформления, зависящие от конкретной платформы: как правило, с учетом регистра в POSIX и без учета регистра в Windows. Чтобы переопределить такое поведение, необходимо установить значение case_sensitive равным True или False .

Path.iterdir() :

Метод Path.iterdir() вернет итератор объектов пути содержимого каталога, если путь path указывает на каталог:

>>> from pathlib import Path >>> p = Path('docs') >>> for child in p.iterdir(): str(child) . # 'docs/conf.py' # 'docs/_templates' # 'docs/make.bat' # 'docs/index.rst' # 'docs/_build' # 'docs/_static' # 'docs/Makefile' 

Смотрите другие методы и свойства, доступные экземпляру класса Path() модуля pathlib .

  • os.listdir() — список файлов в директории/каталоге,
  • os.scandir() — информация о всех файлах в каталоге/директории,
  • glob.glob() — рекурсивный поиск файлов по шаблону,
  • os.walk() — рекурсивный обход каталога как в глубину, так и из глубины.
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Класс pathlib.PurePath() и его подклассы
  • Класс pathlib.Path() и его подклассы
  • Манипуляции с путями файловой системы средствами pathlib
  • Проверить наличие файла/каталога/ссылки и т.д. средствами pathlib
  • Открытие файла, чтение и запись информации средствами pathlib
  • Определение положения в файловой системе средствами pathlib
  • Список файлов в папке/каталоге по шаблону средствами pathlib
  • Создание/удаление файла/каталога или ссылки средствами pathlib
  • Получение информации о файле/каталоге средствами pathlib
  • Изменение режима доступа к файлу или каталогу средствами pathlib
  • Переименование/замена файла или каталога средствами pathlib
  • Преобразование объекта пути pathlib в строку
  • Метод walk() модуля pathlib, рекурсивный обход каталога
  • Сравнение pathlib с модулями os и os.path

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *