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

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

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

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

После этого, если аргумент Кеер ЬасКор имеет значение Еа1эе (по умолчанию), файл резервной копии удаляется. В заключение, чтобы подготовиться к последующим операциям чтения и записи, уплотненный файл (который теперь имеет имя оригинального файла) открывается. Класс 81пагуйесогбЕт1е. ВтпагуйесогбЕт1е содержит весьма низкоуровневую реализацию, но он может служить основой для классов более высокого уровня, где необходима возможность произвольного доступа к данным в файлах, хранящих записи фиксированного размера; это будет показано в следующем подразделе.

Пример: классы в модуле Вйе51ос1( Модуль 81Ке81осК использует класс 81па гуйесо гбЕ11е. Втпа гуйесогбЕт1е для управления простым хранилищем информации. Элементами хранения является информация о велосипедах, каждый из которых представляет собой экземпляр класса 81Ке8!ЬЬК.В!Ке8!ЬЬК. Класс В!Кей!осК.В1Ке- 8!осК содержит в себе словарь, ключами которого являются идентификаторы велосипедов, а значениями — индексы соответствующих записей в ВтпагуйесогбЕ11е. 81пагуйесогбЕ!1е. Ниже приводится короткий пример, дающий некоторое представление о том, как работают эти классы: Ьтсус!еа = ВтхезтосК.В!Ке8тосК(втКе Г11е) ча1ое = 0.0 Гог ЫКЕ тл Ь!сус1ев: ча1ие»= ЫКе.ча1че Ьтсус1еа.тпсгеаае атосК("6ЕККО", 2) Гог ЫКе тп Ысус1еа: !Г ЫКе.!беп!тту.втаг!ачг11Ь("840").' 1Г по! Ьтсус1ев.!псгеаве атосК(ЫКе, !сепг!!у, 1); рг1пт("вгоск аачеаепт га11еб гог", ыке.!беп!1гу) Этот фрагмент программного кода открывает файл хранилища информации о велосипедах, выполняет итерации по всем содержащимся в нем записям и определяет общую стоимость (сумма произведений ценах количество) велосипедов на складе.

Затем он увеличивает на два количество велосипедов «СЕККО», хранящихся на складе, и на один — количество велосипедов, названия которых начинаются с «В4()». Все эти действия выполняются непосредственно с информацией на диске, поэтому любые другие процессы, обращающиеся к файлу хранилища, имеют доступ к самой свежей информации. Класс 81пагуйесогбЕ11е.

81пагуйесогбЕ!1е работает с файлом в терминах индексов, тогда как класс 81Ке8!осК.ВтКе8!ЬсК работает в терминах идентификаторов велосипедов. Это возможно благодаря тому, что экземпляр класса В!Кей!осК,В!Кей!ЬЬК хранит словарь, устанавливаю- Произвольный доступ к двоичным данным в файлах ЗВУ щий отношения между идентификаторами велосипедов и индексами записей.

Сначала рассмотрим инструкцию с1ава и метод инициализации класса В1КеЗтосК. В! Ке, затем обсудим некоторые методы класса В1КеЗ(ссК. В1КеЗтосК и в заключение посмотрим на программный код, играющий роль связутощего звена между объектами В1КеЗтосК, В1Ке и двоичными записями, представляющими их в В1пагуйесогбЕ11е. ВтпагулесогбЕ11е (весь программный код находится в файле ВИеЯ!ос)г.ру). с1аьа В1хе: бег 1пзт (ае1(, заест!ту, паае, снап(1ту, рг[се); аавегт 1еп(абел!!ту) > 3, ("1пча1!б ыке !беп(1(у '(О)'" . Гсгаат(!сепг!ту) ) ае1г, шепт(ту = шепт(ту ае1(, паве = паве ае1(.сиапт1ту = пчапт!ту ае1(.рг!се = рг1се Все атрибуты класса ВТКе доступны внешнему программному коду как свойства — идентификатор велосипеда (ве1(.

!бел!1!у) представляет свойство Взке. !беп!1ту, доступное только для чтения, остальные свойства доступны как для чтения, так и для записи и обеспечивают дополнительную проверку корректности записываемых данных с помощью инструкции аааег1. Дополнительно имеется свойство В!Ке.ча1се, доступное только для чтения, возвращающее произведение цены на количество. (Здесь не приводится программный код реализации свойств, так как он похож на программный код, который приводился ранее,) Класс ВТКеЗтосК.

В1КеЗтосК реализует собственные методы манипулирования объектами типа В!КеЗтрсК.В)Ке, которые используют свойства объектов класса В!КеЗтосК. В1Ке, доступные для записи. с1ава ВТКезтсск: бет !п11 (ве1(, Г!1епаае): ве1Г. (11е = В!пагуаессгбЕ11е.з1пагуаесргбЕ11е(тт1епаае, В!КЕ ЗТНОСТ.а)зе) ве1(. !пбех ггса !беж!ту = () Грг 1пбех 1п галсе(1еп(ае1(. Гз1е)): гессгб = ае1(. Гт1е[[пбех] 1( гессгб !а пст Нспе. Ьтхе = Ьихе Ггса гессгб(гессгб) ае1(. тпбех Ггра !бепт1ту[Ь[Ке. 1бепт!ту] = 1пбех Класс В1КеЗ!ЬЬК.

ВзхеЗтосК вЂ” это наш собственный класс коллекций, агрегирующий экземпляр класса В1пагуйесогбЕ!1е. В[па гуйесогбрз1е (зе1г. (11е) и словарь (ве1(, зпбех Ггоа !бел!!ту), ключами которого являются идентификаторы велосипедов, а значениями — индексы записей с информацией о них.

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

бег вррепб(вв11, ЬГКе): !пбех = 1еп(ве11. ГГ1е) ве!Г Гт1е[!пбех] = гвсогб Ггоа Ь!Ке(Ь!Ке) вв1Г, !пбвх ггоа тбепттту[ыке.!бел!!Гу] = тпбех Чтобы добавить новый велосипед, необходимо определить подходящий номер позиции и поместить в эту позицию запись с двоичным представлением информации о велосипеде. При этом мы не забываем дополнитьсловарьве1[. тпбех Ггоа !берт!!у. беГ бе11теа (ве)Г, !бепт1ту): бе1 ве1Г Г!1е[ве1Г. !пбех Ггоа !бепт1ту[!бел!!ту]] Удаление записи с информацией о велосипеде выполняется очень просто — достаточно по идентификатору определить номер позиции и удалить запись в этой позиции.

В классе В!КеЯтосК. ВГКеВ!осК не предполагается использовать возможность восстановления удаленных записей, предусматриваемую классом В1пвгуйесогбЕ!1е. ВтпагуйесогбЕ11е. бег цет1теа (вв1Г, !беп!тту): гесогб = ве11. Г!1е[вв!Г. 1пбех Ггоа тбвпт!!у[1бепт1ту]] ге!игл Коле !Г гесогб 1в Моле е1ве (ПКе Ггоа гесагб(гессгб) Записи с информацией о велосипедах извлекаются по идентификатору велосипеда. Если в словаре ве!Г. тпбех Ггоа !бел!!ту отсутствует запротпенный идентификатор, возбуждается исключение КеуБггог, а если запись пустая или была удалена, объект ВтпагуйесогбЕ!1е. ВтпвгуйесогбЕ!1е вернет значение йопе, Но если запись существует, она возвращается в виде объекта В1Ке81осК.

В1Ке. бег сьвпде втаск(ве1Г, тбепт1ту, ваоипт): 1пбех = ве1Г. !пбех Ггса 1бепттту[!бел!!ту] гесогб = ве1Г. Г11е[тпбех] 1Г гесргб тв Капе'. гетпгп Ев1вв Ь!Ке = ЬГКе Ггпа гесьгб(гесьгб) ь!ке.цивпт!ту += ваььпт ве1Г. Г!1в[1пбех] = геспгб Ггоа Ь!Ке(ЬГКе) гетпгп Тгив тпсгевве втоск = (1ваьбв вв1Г, !берт!ту, ваььпт: ве11. Ььвпде втоск(!бепт1ту, ваьипт)) бесгеаве втоск = (1ваьба ве1Г, !бел!!ту, ваоьпт: ве11. сьвпце втоск(!бел!!ту, -ааоппт)) 989 Произвольный доступ к двоичным данным е файлах Частный метод слапде в!сох() содержит реализацию для методов шсгеаве втссК() и Сесгеаве втссК(). Он определяет индекс записи и извлекает ее в двоичном представлении. Затем запись преобразуется в объект В1КеБТОсК.

В1Ке, к этому объекту применяются необходимые изменения, после чего двоичная запись в файле затирается двоичным представлением измененного объекта. (Существует также метод спапде Ь[Ке(), содержащий реализацию методов слапде пзае() и спапде ргтсе(), но ни один из них не будет рассматриваться здесь, так как они очень похожи на методы, продемонстрированные выше.) Свт ттег (ве1Г): Гог тпввх !и гвпде(1еп(ве1(. Тт1е)): гессгп = вв1т.

т!1е[!пзвх] 1Г гесогз тв пот Иоле; у1е1С Ь)ке Ггом гесогп(гесогп) Этот метод обеспечивает возможность итераций через объекты ВзхеБтссх. ВтхеБтссК, как через списки, возвращая на каждой итерации объект ВТКеБ!ОСК. В1Ке и пропуская пустые и удаленные записи. Частные функции Ь[Ке Тгсм гессгс() и гесогС Тгсм ЬТКе() отделяют двоичное представление объектов класса В! КеБТООК. В1Ке от класса ВТКеБтссК. В1КеБТосК, хранящего коллекцию велосипедов. Логическая структура записи с информацией о велосипеде в файле показана на рис. 7.4. Физическая структура записи несколько отличается, потому что каждая запись содержит дополнительный байт состояния.

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

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

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

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