Главная » Просмотр файлов » Саммерфилд - Программирование на Python 3

Саммерфилд - Программирование на Python 3 (1077331), страница 56

Файл №1077331 Саммерфилд - Программирование на Python 3 (Саммерфилд - Программирование на Python 3) 56 страницаСаммерфилд - Программирование на Python 3 (1077331) страница 562018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 56)

В дополнение к поддержке различных форматов файлов стандартная библиотека содержит пакеты и модули, обеспечивающие средства сохранения данных. Модуль рте(т1е используется для сохранения на диске и восстановления с диска произвольных объектов Ру1Ьоп (включая целые коллекции) — подробнее об этом модуле рассказывается в главе 7.

Помимо этого, стандартная библиотека поддерживает файлы ПВМ различных типов — эти файлы напоминают словари за исключением того, что их содержимое хранится на диске, а не в памяти, а их ключи и значения должны быть либо объектами типа Ъузеэ, либо строками. Модуль вЬе1че, описываемый в главе 11, может использоваться для работы с файлами 1)ВМ со строковыми ключами и произвольными объектами РуФЬоп в качестве значений — модуль незаметно для пользователя преобразует объекты Ру$Ьоп в объекты типа Ьу$еа и обратно.

Модули для работы с файлами )хВМ, прикладной программный интерфейс к базам данных и использование встроенной базы данных Яь(1.11е рассматриваются в главе 11. Пример: модуль Ьавеб4 Модуль оаае64 главным образом используется для обработки двоичных данных, внедренных в сообщения электронной почты в виде текста АЯСП. Он также может использоваться для сохранения двоичных данных в файлах с расширением .ру. Первый шаг состоит в том, чтобы преобразовать двоичные данные в формат Ваэеб4. В следующем фрагменте предполагается, что модуль Ьаае64 уже был импортирован, а путь к файлу.рлд хранится в переменной 1е(т а1трп рпр: шпагу = орел(1атт а1трп рпр, "го").геао() ааст1 тахт = "" гог т, с тп епоэегата(оааа64.664апооое(шпагу)): тт т апс т % 66 == О: ааоы техт Я= "т,Чтп" ааом тахт += спг(о) 1етт а)трп.

рпд Этот фрагмент программного кода читает файл в режиме Тип данных двоичного доступа и преобразует его в строку символов АЯСП, в формате Ваэе64. После каждого шестьдесят вось- стр. 644 мого символа к строке добавляется комбинация символа обратного олеша и перевода строки. Это ограничивает 258 Глава 5. Модули ширину строк 68 символами АБСН и гарантирует, что при обратном чтении данных символы перевода строки будут проигнорированы (потому что символы обратного олеша экранируют их).

Текст АЯСН, полученный таким способом, может сохраняться в виде литерала типа Ьугев в файле с расширением .ру, например: ЕЕРТ АС16И РИВ = Ь"""'х 1ЧВОВЧОКОдоААААИБЧЬЕУВАААСАААААдСАУАААВааогОААААВСЬВТОЕААЕОРС/хЬВОАА~ ЬваооВРАвЧТ2+СиуувгСЧА90ГРИСК1+ЬИВр18ГСИдсОггрдиВЬ2гЧСВ+42уеАААААЕ1РХ ТКБодвСС""" Мы опустили большую часть строк, заместив их многоточием. Данные могут быть преобразованы обратно в первоначальный формат, как показано ниже: Ьшагу = Ьаве64.Ь64аасосе(ЕЕРТ АЕ16И РИО) Двоичные данные могут быть записаны в файл с помощью цепочки вызовов: орел( гт1елаве, ГИЬ" ) . Иг11е(Ь)лагу).

Двоичные данные в файлах .Ру занимают значительно больше места, чем в оригинальной форме, но такая возможность может быть полезной, когда нам потребуется написать программу, хранящую все необходимые двоичные данные в виде единственного файла .ру. Пример: модуль Саут))е В большинстве версий ЪУ1пс(очгв отсутствует встроенная поддержка работы с форматом паг, который очень широко используется в системах Т))х)1Х. Этот недостаток легко можно ликвидировать с помощью модуля С а г111е из стандартной библиотеки РуЬЬоп, который способен создавать и распаковывать архивы лаг и .1аг.лг (которые называют лтарболлами), а при наличии дополнительных библиотек еще и архивы лог.бг2. Ниже приводятся ключевые выдержки из программы ил.

сопру, способной распаковывать тарболлы средствами модуля Таг(т1е. Начинается программа с инструкций импортирования: 822 АЧА1ЕАВЕЕ = Тгое Тгу: ырогс Ьг2 ехсерс !врогГЕггог; 872 АЧА1ЕАВЕЕ = Ра1ве Модуль Ь22 используется для работы с форматом сжатия Ьв1р2, но операция импортирования будет терпеть неудачу, если интерпретатор РуЬЬоп был собран без доступа к библиотеке Ьв1р2. (Версии РуЬЬоп для ТАГ1пс)оччв всегда собираются со встроенной поддержкой сжатия Ьв1р2, поэтому отсутствовать она может только в некоторых сборках для ())х)1Х.) Здесь учитывается возможность того, что модуль может быть недоступен, именно поэтому используется блок 1гу .. ехсерг и логическая переменная, к которой можно будет обратиться позже (хотя Обзор стандартной библиотеки языка Рутбоп 259 здесь мы не будем приводить программный код, который обращается к ней).

ОнтнОБтед РнеР1хеБ = тор1е(("/ . \Х ) ' (с + ";" тог с (п втыпд.авсы 1еттегв]) Эта инструкция создает кортеж ('/', ''ч', 'А: ', 'В: ', ..., 'Е: ', 'а: ', 'г: '). Любое имя файла в тарболле, начинающееся с указанных префиксов, считается подозрительным — в именах файлов втарболле не должны использоваться абсолютные пути, поскольку это влечет за собой риск перезаписи системных файлов; поэтому в качестве предварительной меры мы не будем распаковывать файлы, имена которых начинаются с указанных префиксов.

оет оптаг(агсп(че): твг = Носе тгу: гвг = твгтт1е.преп(агсюче) тот пепоег тп таг.детвевоегв(): )т пепЬег.папе,втвгтвнт(П(ОЙТНОБТЕЬ РНЕР1ХЕБ): ргтпт("сптгчвтес ргегтх, тцпогтпц", пепьег.папе) е11Г ".." тп пеэЬег.папе: ргют("воврест рагс, тдпог)пц", вепЬег.папе) е1ве; твг.ехтгаст(пеэоег) ргтпт("опрасхес", эепЬег.папе) ехсерт (тагтт1е.тагеггог, епчтгоппептеггог) ав егг: еггог(егг) ттпа11у: тт таг тв пот нопе: таг.с1ове() Каждый файл в тарболле называется членом.

Функция таггт1е. цетаеаЬегв() возвращает список объектов тат(11е. Таг1пто, по одному для каждого члена. Имена файлов членов, включая пути, хранятся в атрибуте тагтт1е. Тзг1п(о. паве. Если имя начинается с одного из подозрительных префиксов или содержит .. в пути, программа выводит сообщение об ошибке; в противном случае вызывается функция тагт!1е.ехтгаст(), сохраняющая член на диск. Модуль тагтт)е определяет множество собственных исключений, но в программе используется упрощенный подход к обработке ошибок, поэтому, когда возбуждается какое-либо исключение, она просто выводит текст сообщения об ошибке и завершает работу. овт еггог(пввваце, ехы атагов=т): рг1пт(певваце) вув.ехтт(ехтт агатов) Функция еггог() приведена здесь лишь для полноты картины.

Функция эазп() (которая здесь не приводится) выводит сообщение о порядке использования, еелн программа была запущена с ключом -Ь или 260 Глава 5. Модули — Пе1р; в противном случае она выполняет некоторые основные проверки, после чего вызывает функцию опгзг(), передавая ей имя файла тарболла. Работа с файлами, каталогами и процессами Модуль япо!11 предоставляет высокоуровневые функции для работы с файлами и каталогами, включая яоо! !1, сору( ) и яоог!1, сору! гее( ), позволяющие копировать файлы и целые деревья каталогов; япиы1,вове(), позволяющую перемещать деревья каталогов, и язог!1.

га(гее(), позволяющую удалять целые деревья каталогов, даже непустые. Временные файлы и каталоги должны создаваться с помощью модуля гевр(!1е, который включает все необходимые для этого функции, например, !еврГ!1е.вхягевр(), и обеспечивает максимально возможную безопасность временных файлов. Модуль Г!1есар может использоваться для сравнения файлов — с помощью функции Г!1есвр.

свр() и целых каталогов — с помощью функции Г!1есвр. сарп!1ея(). Одна из областей, где особенно эффективно могут использоваться программы на языке Ру!)юп, — это управление ходом выполнения других программ. Реализовать такое управление можно средствами модуля яооргосеяя, позволяющими запускать другие процессы, взаимодействовать с ними с помощью каналов и получать возвращаемые значения. Этот модуль описывается в главе 9. Существует более мощная альтернатива, в виде модуля во11!ргосеяя!пр, обладающего обширными возможностями распределения работы между несколькими процессами и сбора результатов. Этот модуль нередко может использоваться как альтернатива многопоточной обработке данных.

Модуль оя обеспечивает платформонезависимый доступ к средствам операционной системы. Переменная оя. епч! гоп хранит объект отображения, элементами которого являются имена переменных окружения и их значения. Рабочий каталог программы можно получить с помощью функции оя, ре!сиО(), а изменить его можно с помощью функции оя, сПО! г(). Кроме того, модуль содержит функции для низкоуровневой работы с файлами на основе их дескрипторов. Функция оя. ассеяя() может использоваться для определения наличия файла или его доступности для чтения или записи.

Функция оя.1!я!о!г() возвращает список записей (то есть имен файлов и каталогов, за исключением элементов и ) в указанном каталоге. Функция оя.я!а!() возвращает различные сведения о файле или каталоге, такие как режим доступа, время последнего обращения и размер. Каталоги могут создаваться с помощью функции оя. апс!г() или, если потребуется попутно создать промежуточные каталоги, с помощью функции оя.вяхеО1гя(). Пустые каталоги могут удаляться с помощью функции оя, гвО!г(), а деревья каталогов, содержащие только пустые Обзор стандартной библиотеки языка Русйол 261 каталоги, — с помощью функции ов, геаоуебт гв(). Файлы или каталоги могут удаляться с помощью функции ов, геаоае(), а переименовываться с помощью функции ов. гепаае(). Функция ов.

аа1К( ) позволяет выполнять итерации по всему дереву каталогов, по очереди извлекая все имена файлов и каталогов. Кроме того, модуль ов содержит множество низкоуровневых, платформозависимых функций, например, для работы с дескрипторами файлов, а также для ветвления (только в системах БХ1Х), порождения дочерних процессов и для запуска процессов. Модуль ов предоставляет функции для взаимодействия с операционной системой, в частности, для работы с файловой системой, а модуль ов.

ра1П содержит набор функций для работы со строками (путями к файлам) и некоторые вспомогательные функции для работы с файловой системой. Функция ов. ра1П. аЬврасл() возвращает абсолютный путь для своего аргумента, с удалением избыточных разделителей имен каталогов и элементов . Функция ов. ра1П. вр111() возвращает кортеж, содержащий 2 элемента, первый элемент которого содержит путь, а второй — имя файла (который будет представлен пустой строкой, если имя файла в указанном пути не задано). Эти две части могут быть получены по отдельности, с помощью функций ов.рзсп.б!гпвае() и ов.

Характеристики

Тип файла
DJVU-файл
Размер
6,88 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6363
Авторов
на СтудИзбе
310
Средний доход
с одного платного файла
Обучение Подробнее