
Python — это мощный инструмент для работы с файлами и каталогами. Благодаря встроенным библиотекам, таким как os и glob, можно с легкостью получать списки файлов, искать файлы по шаблону, управлять файловыми путями и выполнять другие файловые операции.
Один из наиболее простых способов получить список файлов в каталоге — использовать функцию 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() позволяет получить список файлов, соответствующих определенному шаблону.
import glob
# получение списка всех файлов с расширением .txt
txt_files = glob.glob('*.txt')
print(txt_files)В этом примере *.txt — это шаблон, который соответствует любому файлу с расширением .txt.
Функция glob.glob() также может выполнять рекурсивный поиск файлов в подкаталогах. Для этого следует использовать символ **.
import glob
# рекурсивный поиск всех файлов с расширением .txt
txt_files = glob.glob('**/*.txt', recursive=True)
print(txt_files)Аргумент recursive=True обязателен для рекурсивного поиска.
Функции 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 позволяют получать списки файлов, искать файлы по шаблону, сортировать и фильтровать списки файлов и выполнять другие операции над файлами и каталогами.
Содержание: