Как посчитать количество объектов (файлов и папок) в папке?
Имееется ввиду использование класса 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 Комментировать

path, dirs, files = next(os.walk(«.»))
Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
Опять коги! Выдаёт ошибку, как её убрать?
- 1 подписчик
- 38 минут назад
- 31 просмотр

- 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