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

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

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

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

81КЕ БТВОСТ = в!гост.в!гост(тк8830ыз") Свт ЫКЬ тгов гесогв(гесогп): ТО, МАМЕ, ООАИТ(ТУ, РМТСЕ = галде(г) рвгтв = 11вт( 81КЕ БТ~ОСТ.опрасх(гвсогп)) рагтв[1О] = рагтв[!О].сесосв("отг8").гвтг!р("',КОС") рвгтв[иАме] = рагтв[МАме].сесосе("ьт(8").гвтг1р("Кхсс") гвтогп Взке( рвгтв) Сет гесьгз тгом Ьзхе(ЬТКв): гвтьгп 81КЕ БТНОСТ.расх(Ьтхв.!осот!Ту.епсоов("вт(8"), Рис. 7.4. Логическая структура файла, «раняи(его записи с информацией о велосипедах 390 Глаза 7. Работа с файлами 01ке.паве.епссзе("итт8"), Ь1Ке.

Спапт1ту, б)Ке, рг1се) При преобразовании двоичной записи в объект В1КеЗтосК. В1Ке сначала выполняется преобразование кортежа, возвращаемого методом сп- расК(), в список. Это позволяет выполнять модификацию элементов, в данном случае — преобразовывать байты в кодировке ПТг-8 в строки, с усеченнем завершающих байтов ОКОВ. После этого с помощью оператора распаковывания последовательностей (*) осуществляется передача отдельных полей записи методу инициализации класса В1КеЗтосК. В1Ке.

Упаковывание данных выполняется намного проще, при этом не следует забывать о необходимости преобразования строк в последовательности байтов БТВ'-8. Потребность в прикладных программах, осуществляющих произвольный доступ к двоичным данным в файлах, уменьшается по мере увеличения объемов оперативной памяти и скорости работы дисков в современных настольных системах. А когда возникает потребность в такой функциональности, часто бывает проще использовать файлы 1)ВМ или базы данных Яь)Е.

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

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

Однако анализ текста может оказаться непростым делом. Мы видели, как можно читать текстовые данные вручную и с помощью регулярных выражений. 391 Упражнения ХМ1 — весьма популярный формат обмена данными и, вообще говоря, будет совсем нелишним предусмотреть в программе хотя бы возможность импортирования и экспортирования данных в формате ХМЬ, даже если основным используемым форматом является двоичный или текстовый.

Мы увидели, как вручную выполнять запись данных в формате ХМЬ, включая корректное экранирование значений атрибутов и текстовой информации, и как записывать эти данные средствами дерева элементов и модели РОМ. Мы также узнали, как выполнять парсинг содержимого файлов ХМЬ с помощью парсеров дерева элементов, БОМ и БАХ, которые предоставляются стандартной библиотекой языка Ру1Ьоп. В заключительном разделе главы мы увидели, как создать универсальный класс для обеспечения произвольного доступа к двоичным данным в файлах, хранящих записи фиксированного размера, и затем увидели, как использовать этот класс в конкретном контексте. Этой главой заканчивается изучение фундаментальных основ программирования на языке Ру1Ьоп. Уже сейчас можно прекратить чтение книги и, используя полученные знания, писать отличные программы.

Но было бы неразумно останавливаться на достигнутом, потому что язык Ру$йоп может предложить намного больше, начиная от приемов, позволяющих сократить и упростить программный код, и заканчивая ошеломляющими средствами, о существовании которых полезно хотя бы знать, даже если они будут востребованы нечасто. В следующей главе мы продолжим изучение вопросов процедурного и объектно-ориентированного программирования, но дополнительно познакомимся с функциональным программированием. Затем, в последующих главах, мы сосредоточимся на изучении более широких приемов программирования, включая программирование многопоточных приложений, организацию сетевых взаимодействий, работу с базами данных, использование регулярных выражений и создание программ с графическим интерфейсом пользователя.

Упражнения В первом упражнении предлагается создать более простой модуль для работы с двоичным файлом по сравнению с тем, что был представлен в этой главе. Истинный размер записи в этом файле точно совпадает с размером, который указывается пользователем. Во втором упражнении предлагается изменить модуль В1КеЯгссК так, чтобы он использовал новый модуль для работы с двоичным файлом. В третьем упражнении предлагается написать программу с самого начала — операции с файлом в ней не отличаются сложностью, но форматирование вывода может оказаться трудным в реализации.

1. Создайте новую версию более простого модуля В1пагуяессяЬЕ11е, в котором не используется байт состояния записи. В этой версии 392 Глава 7. Работа с файлами размер записи, устанавливаемый пользователем, должен совпадать с истинным размером записи. Новые записи должны добавляться с помощью нового метода аррепб( ), который просто перемещает указатель в конец файла и производит вывод записи в файл. Метод ае111ещ () должен позволять замещать только существующие записи — это легко реализовать с помощью метода вееК То тпбех().

Из-за отсутствия байта состояния размер метода Ое111ещ () должен сократиться до трех строк. Метод бе]11ещ () придется полностью переписать, так как он должен будет перемещать все записи, следующие за удаленной, чтобы заполнить освободившийся промежуток. Сделать это можно с помощью чуть больше половины десятка строк, но над реализацией придется подумать.

Метод опбе1е(е() нужно будет полностью убрать, так как теперь операция восстановления поддерживаться не будет. Точно так же надо будет убрать методы сощрас1() и [пр1асе сощрас1(), так как они больше не нужны. Чтобы внести описанные изменения, придется добавить не более 20 новых и строк и удалить по крайней мере 60 строк по сравнению с оригинальным модулем, и это без учета доктестов. Пример решения приводится в файле В(пагуйесогт(г'1[е зла.ру. 2. Как только вы будете уверены, что ваш более простой класс 81па гуПсогбЕТ1е работает, скопируйте файл В1]аеЯуос]ару и измените его так, чтобы он работал с вашим классом ВтпагудсогбЕ1]е.

Для этого придется изменить всего несколько строк. Пример решения приводится в файле В(де$1осЬ спару. 3. Отладка действий с двоичными форматами может оказаться достаточно сложным делом, и в этом может помочь инструмент, который выводит шестнадцатеричные дампы содержимого двоичных файлов. Напишите программу, которая выводила бы в консоли следующий текст справки: бааре: хбыщр.ру [орттопв] 11!в1 [111е2 [... 111ви]] Орттопв: -п, --пе]р вьои тыа пе1р юеаааре апб вх11 -Ь ВЕОСКБ12Е. --Ыооив1ге=ВЕОСК812Е ыоск аые (8..80) [бетаы11 18] -б, --бвс1юа1 бвс!юа1 ыоск пыюьега [бетаы11: пехабвс1юа1] -е ЕЙС001ИО, --епсоб1пр=ЕКС001ДО епсоб1пр (АВС!1..0ТР-32) [бвтаы11: ЬТР-8] (Перевод: порядок исполыаования: хбыюр.ру [параметры] тт1е1 [111е2 [...

111ек]] Параметры: -и, --пв1р вывести ато справочное сообщение и выйти -Ь ВЬОСК812Е, --Ыооха1ав=ВЕОСК812Е Размер блока (8..80) [по умолчанию. 18] -б, --бестюа1 блоки десятичных чисел [по умолчанию шестнадцатеричные] Упражнении -е ЕИСООТЗО, --епсостпО=ЕИС00186 кодировка (ЯВС11..РТЕ-32) [по умолчанию: ОТЕ-8) конец перевода) С помощью этой программы при наличии файла, созданного объектом ВТпагуйесогОЕ11е, в котором хранятся записи в формате "<1108" (обратный порядок следования байтов, 4-байтовое целое со знаком, 10-байтовая строка байтов), установив размер блока в соответствии с размером одной записи (15 байтов, включая байт состояния), можно было бы получить ясное представление о содержимом файла.

Например: хопер. ру -ы5 геа(, оа1 81оск ВУ1ев ОТЕ-8 соагас1егв 00000000 02000000 00416С70 66610000 000000 ..е..Я1роа.... 00000001 01140000 00427261 766ЕОООО 000000 .....Вгауо.... 00000002 02280000 00436861 726С6965 000000 .(...Спаг1Те.. 00000003 023СОООО 0044656С 74610000 000000 .<...Ое11а.... 00000004 02500000 00456368 бЕ000000 000000 .Р...Есоо..... Каждый байт представлен двумя шестнадцатеричными цифрами; пробел между группами из четырех байтов (между группами из восьми шестнадцатеричных цифр) добавляется исключительно ради удобочитаемости. В этом примере видно, что вторая запись («Вгачо») была удалена, потому что ее байт состояния имеет значение Ох01, а не Ох02, используемое для обозначения непустых и не- удаленных записей. Для обработки параметров командной строки используйте модуль ор(рагае.

(Указав «тип» параметра, можно заставить модуль ор(- рагае выполнять преобразование значения параметра с размером блока из строкового представления в целочисленное.) Может оказаться совсем непросто правильно выводить строку заголовка для произвольно заданного размера блока и строки символов в последнем блоке, поэтому обязательно проверьте работу программы с разными размерами блоков (например, 8, 9, 10, ..., 40).

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

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

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

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