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

Лутц М. - Изучаем Python (1077325), страница 54

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

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

д. Открытие файлов В табл. 9. 2 приводятся наиболее часто используемые операции над файлами. Чтобы открыть файл, программа должна вызвать функцию преп, передав ей имя внешнего файла и режим работы. Обычно в качестве режима используется строка ' г', когда файл открывается для чтения 245 Файлы (по умолчанию), 'гг' — когда файл открывается для записи, или 'а'— когда файл открывается на запись в конец.

Существуют и другие возможности, но мы не будем упоминать о них здесь. В некоторых случаях в конец строки режима может добавляться символ Ь, что позволяет работать с двоичными данными (интерпретация символов новой строки отключена), а добавление символов а+ означает, что файл открывается как для чтения, так и для записи (т. е. из файла можно читать и записывать в него с помощью одного и того же объекта). Таблица 9.2. Часто используемые операции над файлами Операция Интерпретация опгрпз = преп( /Юргврве', 'п' ) Открываетфайл для записи('н' означает вгг)(е— запись) 1прпг = орвп('Свгв, 'г') 1ПРп1 = ОРЕП('Свзв') вепчпр = 1прпк гевс() аьгг1пр = 1пррп геаз(и) вьгг1пр = 1прпг гввс11пв() Чтение файла целиком в список строк Запись строки в файл Запись всех строк нз списка в файл сьзрпк (1пвз() апуег1е.веси(и) Оба аргумента функции ореп должны быть строками. Кроме того, может использоваться третий необязательный аргумент, управляющий буферизацией выводимых данных, — значение ноль означает, что выходная информация не будет буферизироваться (т.

е. она будет записываться во внешний файл сразу же, в момент вызова метода записи). Имя внешнего файла может включать платформозависимые префиксы абсолютного или относительного пути к файлу. Если путь к файлу не указан, предполагается, что он находится в текущем рабочем каталоге (т. е. в каталоге, где был запущен сценарий). аювз = 1прпп гевб11пев() спгрпг, нг(1в(взгг1пр) аырпк игЫЕ1гпез(зюзю) опгрпг с1све() Открывает Файл для чтения ( г ' означает геаг(— чтение) То же самое, что н в предыдущей строке (ре- жим ' г' используется по умолчанию) Чтение файла целиком в единственную строку Чтение следующих а байтов (одного илн более) в строку Чтение следующей текстовой строки (включаа символ конца строки) в строку Закрытие файла вручную (выполкяется по окончании работы с Файлом) Выталкивает выходные буферы ва диск, файл остается открытым Изменяет текущую позицию в файле лля сле- дующей операции, смещая ее на и байтов от на- чала Файла.

246 Глава 9. Кортежи, файлы и все остальное Использование файлов Как только будет получен объект файла, вы можете вызывать его методы для выполнения операций чтения или записи. В любом случае содержимое файла в программах на языке Ру(Ьоп принимает форму строк — операция чтения возвращает текст в строках, а метод записи принимает информацию в виде строк. Существует несколько разновидностей методов чтения и записи, а в табл. 9.2 перечислены лишь наиболее часто используемые из них. Несмотря на то, что методы чтения и записи, перечисленные в таблице, являются наиболее часто используемыми, имейте в виду, что самый лучший, пожалуй, способ чтения строк из файла на сегодняшний день состоит в том, чтобы не читать файл вообще — как будет показано в главе 13, файлы имеют илтералтор (Вегатог), который автоматически читает информацию из файла строку за строкой в контексте цикла тог, в генераторах списков и в других итерационных контекстах.

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

Кроме того, в состав РуФоп входят дополнительные стандартные библиотечные инструменты, предназначенные для работы с универсальным объектом хранилища данных (например, модуль ртсК1е) и обработки упакованных двоичных данных в файлах (например, модуль зт гост).

С действием обоих модулей мы познакомимся ниже, в этой же главе. Вызов метода с1озе разрывает связь с внешним файлом. Как рассказывалось в главе 6, интерпретатор РуФЬоп немедленно освобождает память, занятую объектом, как только в программе будет утеряна последняя ссылка на этот объект. Как только объект файла освобождается, интерпретатор автоматически закрывает ассоциированный с ним файл. Благодаря этому вам не требуется закрывать файл вручную, особенно в небольших сценариях, которые выполняются непродолжительное время. С другой стороны, вызов метода с1ове не повредит, и его рекомендуется использовать в крупных системах.

Строго говоря, возможность автоматического закрытия файлов не является частью спецификации языка, и с течением времени такое поведение может измениться. Следовательно, привычку вызывать метод с1ове вручную можно только приветствовать. Файлы Файлы в действии Давайте рассмотрим небольшие примеры, демонстрирующие основы работы с файлами.

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

Ниже приводится полный листинг сеанса: № Открывает файл для записи (создавт файл) еХп') № Записывает строку текста Выталкивает выходные буферы нз диск Открывает файл для чтения: 'г' - по уиолчанию Читает строку Пустая строка: конец Фзйлз Этот пример записывает единственную строку текста в файл, добавляя в нее символ конца строки ч~п — методы записи не добавляют символ конца строки, поэтому нам необходимо добавлять его в выводимые строки (в противном случае следующая операция записи дополнит текущую строку в файле). Сохранение и интерпретация объектов Рутххоп в файлах Теперь создадим большой файл.

Следующий пример записывает раз- личные объекты в текстовый файл. Обратите внимание на использова- ние средств преобразования объектов в строки. Напомню, что данные всегда записываются в файл в виде строк, а методы записи не выпол- няют автоматического преобразования данных: Объекты языка Рутлоп долины записываться в Файл только в вида строк »>Х, У, 2-"43, 44, 45 № »> 8 = 'Враз' № >» о = ('а': и 'ь'; 2) »> 1 = (Н 2, 8) »> »> Е орел('баге(11е.(хг', 'и') »> Е.агате(8 + 'хп') »> Е.агате('Хв,хв,авХп' Х (Х, у, »> Е.итие(в(г(1) + 8 + втг(0) »> Е,с1ове() Создав файл, мы можем исследовать его содержимое, открыв файл и прочитав данные в строку (одной операцией).

Обратите внимание, что функция автоматического вывода в интерактивной оболочке дает точное побайтовое представление содержимого, а инструкция рып( »> ау(11е = орел('ау№11е', 'и') »> ау(11е.аггее('Пе11о Хех( Г11 »> ау№11е,с1ове() »> ау(11е = орел('ау(11е') »> аун1е. геаб11пе() № 'пе11о техт (>1е1п' »> ау(11е.гваб1(пе() № № Создает Файл для записи № Строки завершаются сииволои (и 2)) № Првобрззувт числа в строки + 'Хп') № Преобразует и разделяет сииволои $ 248 Глава 9.

Кортежи, файлы и все остальное интерпретирует встроенные символы конца строки, чтобы обеспечить более удобочитаемое отображение: »> ьутев = орел('бата№11е,тхт').гевб() № Отобращение оугез »> Ьутев № в нерориатироааннон виде "зравкп43,44,45ч,я[ 1, 2, 3)З('а' 1. 'ь': 2)'чп" »> рг1пт Ьутев № Удобочитаеиое представление Зрав 43,44,45 [ 1, 2, 3)З('а'; 1, 'ь': 2) »> Р = орел('бата№11е.тхт') »> 11пе = Р.геаа11пе() »> 11пе 'Зравуп' »> 11пе.гвтг1Р() 'Зрав' № Открыть райн снова № Прочитат~ одну строку № удалить сиивол конца строки Для этой первой строки был использован метод гвтг[р, чтобы удалить завершающий символ конца строки. Тот же эффект можно было бы получить с помощью извлечения среза 1> пе[: -1), но такой подход можно использовать, только если мы уверены, что все строки завершаются символом к,п (последняя строка в файле иногда может не содержать этого символа).

Пока что мы прочитали ту часть файла, которая содержит строку. Теперь прочитаем следующий блок, в котором содержатся числа, и выполним разбор этого блока (т. е. извлечем объекты): № Следующая строка из Файла № Это - строка »> 11пе = Р. гевб11пе() »> Ипе 43,44,451п >» рвгтв = 11пе.вр111(',') »> раста ['43', '44', '451п') № Разбить на подстроки по залатан Здесь был использован строковый метод вр111, чтобы разбить строку на части по запятым, которые играют роль символов-разделителей— в результате мы получили список строк, каждая из которых содержит отдельное число.

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

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

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

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