Рубрики
Без рубрики

Файловая система

Автор оригинала: Doug Hellmann.

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

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

Модуль pathlib предоставляет объектно-ориентированный API для работы с путями файловой системы. Использование его вместо os.path обеспечивает некоторые удобства, поскольку он работает на более высоком уровне абстракции.

Выведите список содержимого каталога с помощью listdir () из os или используйте glob для создания списка имен файлов из шаблона.

Сопоставление с шаблоном имени файла, используемое glob, также предоставляется напрямую через fnmatch, поэтому его можно использовать в других контекстах.

После того, как имя файла определено, другие характеристики, такие как разрешения или размер файла, можно проверить с помощью os.stat () и констант в stat .

Когда приложению требуется произвольный доступ к файлам, linecache упрощает чтение строк по их номеру. Содержимое файла хранится в кеше, поэтому будьте осторожны с потреблением памяти.

tempfile полезен в случаях, когда необходимо создать временные файлы для временного хранения данных или перед перемещением их в постоянное место. Он предоставляет классы для безопасного и надежного создания временных файлов и каталогов. Имена гарантированно уникальны и включают случайные компоненты, поэтому их нелегко угадать.

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

Модуль filecmp сравнивает файлы и каталоги, просматривая содержащиеся в них байты, но без каких-либо специальных знаний об их формате.

Встроенный класс file можно использовать для чтения и записи файлов, видимых в локальных файловых системах. Однако производительность программы может снизиться, когда она обращается к большим файлам через интерфейсы read () и write () , поскольку оба они включают многократное копирование данных по мере их перемещения. с диска в память приложение может видеть. Использование mmap указывает операционной системе использовать свою подсистему виртуальной памяти для отображения содержимого файла непосредственно в доступную для программы память, избегая шага копирования между операционной системой и внутренним буфером для объекта file .

Текстовые данные с использованием символов, недоступных в ASCII, обычно сохраняются в формате данных Unicode. Поскольку стандартный дескриптор file предполагает, что каждый байт текстового файла представляет один символ, чтение текста Unicode с многобайтовой кодировкой требует дополнительной обработки. Модуль кодеков обрабатывает кодирование и декодирование автоматически, так что во многих случаях файлы, отличные от ASCII, можно использовать без каких-либо других изменений в программе.

Модуль io обеспечивает доступ к классам, используемым для реализации файлового ввода и вывода Python. Для тестирования кода, который зависит от чтения или записи данных из файлов, io предоставляет объект потока в памяти, который ведет себя как файл, но не находится на диске.

  • os.path – независимое от платформы манипулирование именами файлов
  • pathlib – Пути файловой системы как объекты
  • glob – сопоставление имени файла с шаблоном
  • fnmatch – сопоставление с шаблоном глобуса в стиле Unix
  • linecache – эффективное чтение текстовых файлов
  • tempfile – временные объекты файловой системы
  • shutil – Файловые операции высокого уровня
  • filecmp – Сравнить файлы
  • mmap – Файлы карты памяти
  • кодеки – Кодирование и декодирование строк
  • io – Инструменты ввода-вывода для текстовых, двоичных и необработанных потоков