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