обработка списков файлов в Python

Работа со списком файлов в Python

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

Получение списка файлов в каталоге с помощью os.listdir()

Один из наиболее простых способов получить список файлов в каталоге — использовать функцию os.listdir(). Эта функция возвращает список всех файлов и каталогов в указанном каталоге.

import os

# получение списка файлов в текущем каталоге
files = os.listdir('.')
print(files)

В этом примере . обозначает текущий каталог. В качестве аргумента можно передать любой путь к каталогу.

Однако эта функция возвращает все файлы и каталоги. Чтобы получить только файлы, можно использовать функцию os.path.isfile().

import os

# получение списка только файлов в текущем каталоге
files = [f for f in os.listdir('.') if os.path.isfile(f)]
print(files)

Получение списка файлов с помощью glob.glob()

Библиотека glob предоставляет более гибкий способ получения списка файлов. Функция glob.glob() позволяет получить список файлов, соответствующих определенному шаблону.

import glob

# получение списка всех файлов с расширением .txt
txt_files = glob.glob('*.txt')
print(txt_files)

В этом примере *.txt — это шаблон, который соответствует любому файлу с расширением .txt.

Рекурсивный поиск файлов с помощью glob.glob()

Функция glob.glob() также может выполнять рекурсивный поиск файлов в подкаталогах. Для этого следует использовать символ **.

import glob

# рекурсивный поиск всех файлов с расширением .txt
txt_files = glob.glob('**/*.txt', recursive=True)
print(txt_files)

Аргумент recursive=True обязателен для рекурсивного поиска.

Получение полных путей файлов с помощью os.path.abspath()

Функции os.listdir() и glob.glob() возвращают имена файлов без полных путей. Чтобы получить полные пути файлов, можно использовать функцию os.path.abspath().

import os
import glob

# получение списка полных путей всех файлов с расширением .txt
txt_files = [os.path.abspath(f) for f in glob.glob('*.txt')]
print(txt_files)

Сортировка списка файлов

Часто возникает необходимость отсортировать список файлов, например, по дате модификации или по размеру. Для этого можно использовать функции os.path.getmtime() и os.path.getsize(), которые возвращают время последней модификации файла и размер файла соответственно.

import os

# получение списка файлов в текущем каталоге
files = os.listdir('.')

# сортировка файлов по дате модификации
files.sort(key=os.path.getmtime)

print(files)  # файлы, отсортированные по дате модификации

Фильтрация списка файлов

Для фильтрации списка файлов можно использовать различные функции модуля os.path, такие как os.path.isdir(), os.path.isfile(), os.path.getsize() и др.

import os

# получение списка файлов в текущем каталоге
files = os.listdir('.')

# фильтрация списка, оставить только файлы размером больше 1 МБ
large_files = [f for f in files if os.path.isfile(f) and os.path.getsize(f) > 1_000_000]

print(large_files)  # файлы размером больше 1 МБ

Заключение

Python предлагает множество встроенных инструментов для работы со списками файлов и каталогами. Модули os и glob позволяют получать списки файлов, искать файлы по шаблону, сортировать и фильтровать списки файлов и выполнять другие операции над файлами и каталогами.

Содержание: