Главная » Просмотр файлов » М. Лутц - Изучаем Python (4-е издание)- 2011

М. Лутц - Изучаем Python (4-е издание)- 2011 (1126907), страница 76

Файл №1126907 М. Лутц - Изучаем Python (4-е издание)- 2011 (М. Лутц - Изучаем Python (4-е издание)- 2011) 76 страницаМ. Лутц - Изучаем Python (4-е издание)- 2011 (1126907) страница 762019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

За дополнительной информацией обращайтесь к главе 36 и к руководству по библиотеке языка Python илиимпортируйте модуль struct в интерактивном сеансе и передайте имя structфункции help. Обратите также внимание, что режимы доступа к двоичнымфайлам ‘wb’ и ‘rb’ могут использоваться для обработки простейших двоичныхфайлов, таких как изображения или аудиофайлы, без необходимости выполнять распаковку их содержимого.Менеджеры контекста файловВам также необходимо будет прочитать обсуждение поддержки менеджеровконтекста файлов в главе 33, впервые появившейся в версиях Python 3.0 и 2.6.Даже при том, что менеджеры контекста в основном применяются для обработки исключений, тем не менее они позволяют обертывать программный код,выполняющий операции с файлами, дополнительным слоем логики, которыйгарантирует, что после выхода за пределы блока инструкций менеджера файлбудет закрыт автоматически, и позволяет не полагаться на автоматическое закрытие файлов механизмом сборки мусора:with open(r’C:\misc\data.txt’) as myfile: # Подробности в главе 33for line in myfile:...операции над строкой line...Аналогичную функциональность предоставляет конструкция try/finally,с которой мы познакомимся в главе 33, но за счет избыточного программногокода – три дополнительных строки, если быть более точным (впрочем, мы можем не использовать ни один из вариантов и позволить интерпретатору самомузакрывать файлы):myfile = open(r’C:\misc\data.txt’)try:for line in myfile:...операции над строкой line...finally:myfile.close()Поскольку для подробного описания обоих способов необходимо иметь дополнительные знания, которыми мы еще не обладаем, мы обсудим в книге эти детали позже.Другие инструменты для работы с файламиКак показано в табл. 9.2, существуют более сложные инструменты для работыс файлами, более того, существуют и другие инструменты, которые отсутствуют в таблице.

Например, функция seek переустанавливает текущую позициюв файле (для следующей операции чтения или записи), функция flush принудительно выталкивает содержимое выходных буферов на диск (по умолчаниюфайлы всегда буферизуются) и так далее.300Глава 9. Кортежи, файлы и все остальноеРуководство по стандартной библиотеке и книги, упомянутые в предисловии,содержат полный перечень методов для работы с файлами. Чтобы кратко ознакомиться с ним, можно также воспользоваться функцией dir или help в интерактивном сеансе, передав ей объект открытого файла (в Python 3.0, но нев Python 2.6, где следует передать имя типа file).

Дополнительные примерыработы с файлами вы найдете во врезке «Придется держать в уме: сканирование файлов» в главе 13. В ней приводятся типичные примеры организации циклов для просмотра содержимого файлов и приводятся инструкции, которыемы еще не рассматривали.Следует также отметить, что функция open и объекты файлов, которые она возвращает, являются в языке Python основным интерфейсом к внешним файлам,однако в арсенале Python существуют и другие инструменты, напоминающиефайлы. Назовем некоторые из них:Стандартные потоки ввода-выводаОбъекты уже открытых файлов в модуле sys, такие как sys.stdout (смотритераздел «Инструкция print» в главе 11)Дескрипторы файлов в модуле osЦелочисленные дескрипторы файлов, обеспечивающие поддержку низко­уровневых операций, таких как блокировка файловСокеты, каналы и очереди (FIFO)Объекты, по своим характеристикам напоминающие файлы, используемыедля синхронизации процессов или организации взаимодействий по сетиФайлы с доступом по ключу, известные как «хранилища» («shelves»)Используются для хранения объектов языка Python по ключу (глава 27)Потоки командной оболочкиТакие инструменты, как os.popen и subprocess.Popen, которые�������������������������������поддержива�����������ют возможность запуска дочерних процессов и выполнения операций с ихстандартными потоками ввода-выводаСреди сторонних открытых модулей можно отыскать еще больше инструментов, напоминающих файлы, включая реализацию поддержки обмена данными через последовательный порт в расширении PySerial и поддержки обменаданными с интерактивными программами в системе pexpect.

Дополнительнуюинформацию о подобных инструментах вы найдете в специализированной литературе по языку Python и в Сети.Примечание, касающееся различий между версиями: В версииPython 2.5 и в более ранних имя open встроенной функции фактически было синонимом имени типа file, а файлы, с технической точки зрения, можно было открыть вызовом функции openили file (хотя предпочтительнее использовать функцию open).В Python 3.0 имя file больше недоступно, потому что оно дублирует имя open.Пользователи Python 2.6 могут также использовать имя fileкак имя типа объекта файла для создания дочерних классов прииспользовании объектно-ориентированного стиля программирования (описывается ниже в этой книге).

В Python 3.0 файлыизменились�����������������������������������������������������������������������������������������������радикально�������������������������������������. �����������������������������������Классы, которые могут использовать-301Пересмотренный перечень категорий типовся в качестве родительских, для реализации собственных типовфайлов, находятся в модуле io. За дополнительной информацией обращайтесь к документации по этому модулю или к исходным текстам доступных классов.

Попробуйте также вызватьфункцию type(F), передав ей объект открытого файла F.Пересмотренный перечень категорий типовТеперь, когда мы познакомились со всеми встроенными базовыми типамиязыка Python в действии, давайте завершим наше турне рассмотрением некоторых общих для них свойств. В табл. 9.3 приводится классификация всехрассмотренных типов по категориям, которые были введены ранее. Напомнюнекоторые положения:•• Над объектами одной категории могут выполняться одни и те же операции, например над строками, списками и кортежами можно выполнятьоперации для последовательностей, такие как конкатенация и определение длины.•• Непосредственное изменение допускают только изменяемые объекты (списки, словари и множества) – вы не сможете непосредственно изменить числа, строки и кортежи.•• Файлы экспортируют только методы, поэтому понятие изменяемости к нимпо-настоящему неприменимо – хотя они могут изменяться при выполненииоперации записи, но это не имеет никакого отношения к ограничениям типов в языке Python.•• В категорию «Числа» в табл. 9.3 входят все числовые типы: целые (длинныецелые, в Python 2.6), вещественные, комплексные, фиксированной точности и рациональные.•• В категорию «Строки» в табл. 9.3 входят строки типа str, а также bytes (вверсии 3.0) и unicode (в версии 2.6).

Строковый тип bytearray в������������������������������� ��������������версии�������� 3.0 от���носится к изменяемым типам.•• Множества напоминают словари, в которых ключи не имеют значений. Элементы множеств не отображаются на значения и неупорядочены, поэтомумножества нельзя отнести ни к отображениям, ни к последовательностям.Тип frozenset – это неизменяемая версия типа set.•• Вдобавок к вышесказанному, в версиях Python���������������������������������������������������������������� 2.6 и 3.0 все типы, перечисленные в табл. 9.3, обладают методами, которые обычно реализуют операции, характерные для определенного типа.Таблица 9.3. Классификация объектовТип объектовКатегорияИзменяемый?Числа (все)ЧислаНетСтрокиПоследовательностиНетСпискиПоследовательностиДаСловариОтображенияДаКортежиПоследовательностиНет302Глава 9.

Кортежи, файлы и все остальноеТаблица 9.3 (продолжение)Тип объектовКатегорияИзменяемый?ФайлыРасширенияПонятие неприменимоМножестваМножестваДаФиксированные множества Множества(frozenset)bytearray (3.0)ПоследовательностиНетДаПридется держать в уме: перегрузка операторовВ шестой части книги мы увидим, что объекты, реализованные с помощью классов, могут свободно попадать в любую из этих категорий.Например, если нам потребуется реализовать новый тип объектов последовательностей, который был бы совместим со встроенными типамипоследовательностей, мы могли бы описать класс, который перегружаетоператоры индексирования и конкатенации:class MySequence:def __getitem__(self, index):# Вызывается при выполнении операции self[index]def __add__(self, other):# Вызывается при выполнении операции self + otherи так далее.

Точно так же можно было бы создать новый изменяемыйили неизменяемый объект, выборочно реализовав методы, вызываемыедля выполнения операций непосредственного изменения (например, длявыполнении операций присваивания self[index] = value вызывается метод __setitem__). Существует также возможность выполнять реализациюновых объектов на других языках программирования, таких как C, в ви­де расширений. Чтобы определить выбор между множествами операцийнад числами, последовательностями и отображениями, необходимо бу­дет подставить указатели на функции C в ячейки структуры.Гибкость объектовВ этой части книги были представлены несколько составных типов объектов(коллекции с компонентами).

В общем случае:•• Списки, словари и кортежи могут хранить объекты любых типов.•• Списки, словари и кортежи допускают произвольную вложенность.•• Списки и словари могут динамически увеличиваться и уменьшаться.Поскольку составные типы объектов в языке Python поддерживают любыеструктуры данных, они прекрасно подходят для представления в программахданных со сложной структурой. Например, значениями элементов словареймогут быть списки, которые могут содержать кортежи, которые в свою очередьмогут содержать словари, и так далее. Вложенность может быть произвольной303Ссылки и копииглубины, какая только потребуется, чтобы смоделировать структуру обрабатываемых данных.Рассмотрим пример с вложенными компонентами. В следующем примере определяется три вложенных составных объекта последовательностей, как показано на рис. 9.1.

Для обращения к отдельным элементам допускается использовать столько индексов, сколько потребуется. В языке Python разыменованиеиндексов производится слева направо и на каждом шаге извлекается объектна более глубоком уровне. Структура данных на рис. 9.1 может показаться излишне сложной, но она иллюстрирует синтаксис, который используется длядоступа к данным:>>> L = [‘abc’, [(1, 2), ([3], 4)], 5]>>> L[1][(1, 2), ([3], 4)]>>> L[1][1]([3], 4)>>> L[1][1][0][3]>>> L[1][1][0][0]3[0][1][0][2][1]abc[0]5[1][0][1][0]1243Рис. 9.1. Дерево вложенных объектов со смещениями их компонентов,созданное с помощью литерального выражения [‘abc’, [(1, 2), ([3], 4)], 5].

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

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

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

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