Автор оригинала: 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 – Инструменты ввода-вывода для текстовых, двоичных и необработанных потоков