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





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