Часто в процессе разработки программ на 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
, включая её поддиректории. Каждый кортеж состоит из трёх элементов:
- Строка с именем текущей директории.
- Список с именами поддиректорий в текущей директории.
- Список с именами файлов в текущей директории.
В этом коде используется цикл 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
.
Оба этих способа являются эффективными и позволяют легко выполнить итерацию по файлам в заданной директории. Выбор между ними зависит от конкретных требований задачи и личных предпочтений разработчика.
Добавить комментарий