Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
01 Окт 2024
2 мин
1395

Итерация по файлам в заданной директории в Python

Часто в процессе разработки программ на Python возникает потребность в выполнении каких-либо действий над всеми файлами определённого типа в заданной

Часто в процессе разработки программ на Python возникает потребность в выполнении каких-либо действий над всеми файлами определённого типа в заданной директории. Например, может потребоваться обработать все текстовые файлы в определённой папке.

Использование модуля os

Один из способов решить эту задачу — использование встроенного в Python модуля os. Этот модуль предоставляет множество функций для взаимодействия с операционной системой, в том числе и для работы с файловой системой.

Вот пример кода, который итерирует по всем файлам с расширением .asm в директории dirname:

import os

for root, dirs, files in os.walk('dirname'):
    for file in files:
        if file.endswith('.asm'):
            print(os.path.join(root, file))

Функция os.walk('dirname') возвращает генератор, который производит кортежи, содержащие информацию о каждой директории в директории dirname, включая её поддиректории. Каждый кортеж состоит из трёх элементов:

  1. Строка с именем текущей директории.
  2. Список с именами поддиректорий в текущей директории.
  3. Список с именами файлов в текущей директории.

В этом коде используется цикл for для итерации по всем файлам в каждой директории. Если имя файла оканчивается на .asm, то этот файл выводится на экран.

Использование модуля glob

Альтернативный способ решения этой задачи — использование модуля glob. Этот модуль содержит функцию glob(), которая возвращает список всех файлов, соответствующих заданному шаблону.

Вот пример кода, который делает то же самое, что и предыдущий пример, но с использованием модуля glob:

import glob

for file in glob.glob('dirname/**/*.asm', recursive=True):
    print(file)

В этом коде функция glob.glob('dirname/**/*.asm', recursive=True) возвращает список всех файлов с расширением .asm в директории dirname и всех её поддиректориях. Параметр recursive=True указывает, что нужно искать файлы и в поддиректориях. Затем этот список обрабатывается с помощью цикла for.

Оба этих способа являются эффективными и позволяют легко выполнить итерацию по файлам в заданной директории. Выбор между ними зависит от конкретных требований задачи и личных предпочтений разработчика.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

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