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

Марк Лутц - Изучаем Python, Четвертое издание (1184811), страница 56

Файл №1184811 Марк Лутц - Изучаем Python, Четвертое издание (Марк Лутц - Изучаем Python, Четвертое издание) 56 страницаМарк Лутц - Изучаем Python, Четвертое издание (1184811) страница 562020-08-21СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Следующая строкасодержит символы “spam”, символ табуляции и символ новой строки, а такженулевой символ, заданный в шестнадцатеричном представлении:>>> S = “s\tp\na\x00m”>>> S‘s\tp\na\x00m’>>> len(S)7>>> print(S)s pa mЭто обстоятельство приобретает особую важность, когда возникает необходимость обрабатывать на языке Python файлы с двоичными данными. Поскольку содержимое таких файлов в сценариях на языке Python представленостроками, вы без труда сможете обрабатывать двоичные файлы, содержащиебайты с любыми двоичными значениями (подробнее о файлах рассказываетсяв главе 9).11Если вам требуется работать с файлами, содержащими двоичные данные, главное отличие в работе с ними заключается в том, что открывать их нужно в режиме двоичного доступа (добавляя к флагу режима открытия флаг b, например “rb”, “wb” и такдалее).

В Python 3.0 содержимое двоичных файлов интерпретируется как коллекция строк типа bytes, которые по своим возможностям напоминают обычные строки.В Python 2.6 содержимое таких файлов интерпретируется как коллекция обычныхстрок типа str. Кроме того, обратите внимание на модуль struct, который будет описан в главе 9, с помощью которого можно выполнять интерпретацию двоичных данных, загруженных из файла. Расширенное описание принципов работы с двоичными файлами и строками байтов приводится в главе 36.214Глава 7. СтрокиНаконец, последняя строка в табл. 7.2 предполагает, что если интерпретаторне распознает символ после \ как корректный служебный символ, он простооставляет символ обратного слеша в строке:>>> x = “C:\py\code”>>> x‘C:\\py\\code’>>> len(x)10# Символ \ сохраняется в строкеОднако если вы не способны держать в памяти всю табл. 7.2, вам не следуетполагаться на описанное поведение.1 Чтобы явно добавить символ обратногослеша в строку, нужно указать два символа обратного слеша, идущие подряд(\\ – экранированный вариант представления символа \), или использовать неформатированные строки, которые описываются в следующем разделе.Неформатированные строки подавляют экранированиеКак было показано, экранированные последовательности удобно использоватьдля вставки в строки служебных символов.

Однако иногда зарезервированнаяэкранированная последовательность может порождать неприятности. Оченьчасто, например, можно увидеть, как начинающие программисты пытаютсяоткрыть файл, передавая аргумент с именем файла, который имеет примерноследующий вид:myfile = open(‘C:\new\text.dat’, ‘w’)думая, что они открывают файл с именем text.dat в каталоге C:\new. Проблемаздесь заключается в том, что последовательность \n интерпретируется как символ новой строки, а последовательность \t замещается символом табуляции.В результате функция open будет пытаться открыть файл с именем C:(newline)ew(tab)ext.dat, причем обычно безуспешно.Именно в таких случаях удобно использовать неформатированные строки.Если перед кавычкой, открывающей строку, стоит символ r (в верхнем илив нижнем регистре), он отключает механизм экранирования.

В результате интерпретатор Python будет воспринимать символы обратного слеша в строке какобычные символы. Таким образом, чтобы ликвидировать проблему, связаннуюс именами файлов в Windows, не забывайте добавлять символ r.myfile = open(r’C:\new\text.dat’, ‘w’)Как вариант, учитывая, что два идущих подряд символа обратного слеша интерпретируются как один символ, можно просто продублировать символы обратного слеша:myfile = open(‘C:\\new\\text.dat’, ‘w’)Сам интерпретатор Python в определенных случаях использует удваивание обратного слеша при выводе строк, содержащих обратный слеш:>>> path = r’C:\new\text.dat’>>> path# Показать, как интерпретатор представляет эту строку1Мне доводилось встречать людей, которые помнили всю таблицу или большую еечасть. Я мог бы посчитать их ненормальными, но тогда мне пришлось бы себя тожевключить в их число.215Литералы строк‘C:\\new\\text.dat’>>> print(path)C:\new\text.dat>>> len(path)15# Более дружественный формат представления# Длина строкиТак же как и в случае с числами, при выводе результатов в интерактивной оболочке по умолчанию используется такой формат представления, как если быэто был программный код, отсюда и экранирование символов обратного слеша.Инструкция print обеспечивает более дружественный формат, в котором каждая пара символов обратного слеша выводится как один символ.

Чтобы проверить, что дело обстоит именно так, можно проверить результат с помощьювстроенной функции len, которая возвращает число байтов в строке независимо от формата отображения. Если посчитать символы в выводе инструкцииprint(path), можно увидеть, что каждому символу обратного слеша соответствует один байт, а всего строка содержит 15 символов.Помимо хранения имен каталогов в Windows, неформатированные строкиобычно используются для регулярных выражений (возможность поиска пошаблону, поддерживаемая модулем re, о котором говорилось в главе 4).

Крометого, следует отметить, что в сценариях на языке Python в строках с именамикаталогов в системах Windows и UNIX можно использовать простые символыслеша, потому что Python старается поддерживать переносимость для путейк файлам (например, путь к файлу можно указать в виде строки ‘C:/new/text.dat’). И все же, когда для кодирования имен каталогов в Windows используетсятрадиционная нотация с обратными слешами, удобно использовать неформатированные строки.Несмотря на свое предназначение, даже неформатированнаястрока не может заканчиваться единственным символом обратного слеша, потому что обратный слеш в этом случае будет экранировать следующий за ним символ кавычки – вы по-прежнемудолжны экранировать кавычки внутри строки.

То есть конструкция r”...\” не является допустимым строковым литералом – неформатированная строка не может заканчиваться нечетным количеством символов обратного слеша. Если необходимо, чтобы неформатированная строка заканчивалась символомобратного слеша, можно добавить два символа и затем удалитьвторой из них (r’1\nb\tc\\’[:-1]), добавить один символ вручную(r’1\nb\tc’ + ‘\\’) или использовать обычный синтаксис строковых литералов и дублировать все символы обратного слеша (‘1\\nb\\tc\\’). Во всех трех случаях получается одна и та же строка извосьми символов, содержащая три обратных слеша.Тройные кавычки, многострочные блоки текстаК настоящему моменту мы познакомились с кавычками, апострофами, экранированными последовательностями и неформатированными строками.

Кроме этого в арсенале языка Python имеется формат представления строковыхлитералов, в котором используются тройные кавычки. Этот формат иногданазывают блочной строкой, который удобно использовать для определениямногострочных блоков текста в программном коде. Литералы в этой форме на-216Глава 7. Строкичинаются с трех идущих подряд кавычек (или апострофов), за которыми может следовать произвольное число строк текста, который закрывается такимиже тремя кавычками. Внутри такой строки могут присутствовать и кавычки,и апострофы, но экранировать их не требуется – строка не считается завершенной, пока интерпретатор не встретит три неэкранированные кавычки того жетипа, которые начинают литерал. Например:>>> mantra = “””Always look... on the bright...

side of life.”””>>>>>> mantra‘Always look\n on the bright\nside of life.’Эта строка состоит из трех строк текста (в некоторых системах строка приглашения к вводу изменяется на ..., когда ввод продолжается на следующейлинии; среда IDLE просто переводит курсор на следующую линию).

Интерпретатор собирает блок текста, заключенный в тройные кавычки, в одну строку,добавляя символы новой строки (\n) там, где в программном коде выполнялсяпереход на новую строку. Обратите внимание, что в результате у второй строкиимеется ведущий пробел, а у третьей – нет, то есть, что вы в действительностивводите, то и получаете. Чтобы увидеть, как в реальности интерпретируетсястрока с символами новой строки, можно воспользоваться инструкцией print:>>> print(mantra)Always lookon the brightside of life.Строки в тройных кавычках удобно использовать, когда в программе требуется ввести многострочный текст, например чтобы определить многострочный текст сообщения об ошибке или код разметки на языке HTML или XML.Вы можете встраивать такие блоки текста прямо в свои сценарии, не используя для этого внешние текстовые файлы или явную операцию конкатенациии символы новой строки.Часто строки в тройных кавычках используются для создания строк документирования, которые являются литералами строк, воспринимаемыми как комментарии при появлении их в определенных местах сценария (подробнее о нихбудет рассказываться позже в этой книге).

Комментарии не обязательно (но часто!) представляют собой многострочный текст, и данный формат дает возможность вводить многострочные комментарии.Наконец, иногда тройные кавычки являются ужасающим, хакерским способом временного отключения строк программного кода во время разработки(Хорошо, хорошо! На самом деле это совсем не так ужасно, а просто довольно распространенная практика). Если вам потребуется отключить несколькострок программного кода и запустить сценарий снова, просто вставьте по трикавычки до и после нужного блока кода, как показано ниже:X = 1“””import osprint(os.getcwd())“””Y = 2Строки в действии217Я назвал этот прием ужасным, потому что при работе интерпретатор вынужден создавать строку из строк программного кода, отключенных таким способом, но, скорее всего, это слабо сказывается на производительности. В случаекрупных блоков программного кода использовать этот прием гораздо удобнее,чем вставлять символы решетки в начале каждой строки, а затем убирать их.Это особенно верно, если используемый вами текстовый редактор не поддерживает возможность редактирования исходных текстов на языке Python.

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

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

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

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