-->

Язык программирования Python

На нашем литературном портале можно бесплатно читать книгу Язык программирования Python, Сузи Роман Арвиевич-- . Жанр: Программирование. Онлайн библиотека дает возможность прочитать весь текст и даже без регистрации и СМС подтверждения на нашем литературном портале bazaknig.info.
Язык программирования Python
Название: Язык программирования Python
Дата добавления: 16 январь 2020
Количество просмотров: 496
Читать онлайн

Язык программирования Python читать книгу онлайн

Язык программирования Python - читать бесплатно онлайн , автор Сузи Роман Арвиевич

Курс посвящен одному из бурно развивающихся и популярных в настоящее время сценарных языков программирования — Python. Язык Python позволяет быстро создавать как прототипы программных систем, так и сами программные системы, помогает в интеграции программного обеспечения для решения производственных задач. Python имеет богатую стандартную библиотеку и большое количество модулей расширения практически для всех нужд отрасли информационных технологий. Благодаря ясному синтаксису изучение языка не составляет большой проблемы. Написанные на нем программы получаются структурированными по форме, и в них легко проследить логику работы. На примере языка Python рассматриваются такие важные понятия как: объектно–ориентированное программирование, функциональное программирование, событийно–управляемые программы (GUI–приложения), форматы представления данных (Unicode, XML и т.п.). Возможность диалогового режима работы интерпретатора Python позволяет существенно сократить время изучения самого языка и перейти к решению задач в соответствующих предметных областях. Python свободно доступен для многих платформ, а написанные на нем программы обычно переносимы между платформами без изменений. Это обстоятельство позволяет применять для изучения языка любую имеющуюся аппаратную платформу.

Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала

1 ... 37 38 39 40 41 42 43 44 45 ... 62 ВПЕРЕД
Перейти на страницу:

Листинг

import urllib

data = {«search»: «Python»}

enc_data = urllib.urlencode(data)

# метод GET

f = urllib.urlopen(«http://searchengine.com/search» + "?» + enc_data)

print f.read()

# метод POST

f = urllib.urlopen(«http://searchengine.com/search», enc_data)

print f.read()

В некоторых случаях данные имеют повторяющиеся имена. В этом случае в качестве параметра urllib.urlencode() можно использовать вместо словаря последовательность пар имя–значение:

Листинг

>>> import urllib

>>> data = [(«n», «1»), («n», «3»), («n», «4»), («button», «Привет»),]

>>> enc_data = urllib.urlencode(data)

>>> print enc_data

n=1&n=3&n=4&button=%F0%D2%C9%D7%C5%D4

Модуль urllib позволяет загружать web–объекты через прокси–сервер. Если ничего не указывать, будет использоваться прокси–сервер, который был задан принятым в конкретной ОС способом. В Unix прокси–серверы задаются в переменных окружения http_proxy, ftp_proxy и т.п., в Windows прокси–серверы записаны в реестре, а в Mac OS они берутся из конфигурации Internet. Задать прокси–сервер можно и как именованный параметр proxies к urllib.urlopen():

Листинг

# Использовать указанный прокси

proxies = {'http': 'http://www.proxy.com:3128'}

f = urllib.urlopen(some_url, proxies=proxies)

# Не использовать прокси

f = urllib.urlopen(some_url, proxies={})

# Использовать прокси по умолчанию

f = urllib.urlopen(some_url, proxies=None)

f = urllib.urlopen(some_url)

Функция urlretrieve() позволяет записать заданный URL сетевой объект в файл. Она имеет следующие параметры:

Листинг

urllib.urlretrieve(url[, filename[, reporthook[, data]]])

Здесь url — URL сетевого объекта, filename — имя локального файла для помещения объекта, reporthook — функция, которая будет вызываться для сообщения о состоянии загрузки, data — данные для метода POST (если он используется). Функция возвращает кортеж (filepath, headers) , где filepath — имя локального файла, в который закачан объект, headers — результат метода info() для объекта, возвращенного urlopen().

Для обеспечения интерактивности функция urllib.urlretrieve() вызывает время от времени функцию, заданную в reporthook(). Этой функции передаются три аргумента: количество принятых блоков, размер блока и общий размер принимаемого объекта в байтах (если он неизвестен, этот параметр равен–1).

В следующем примере программа принимает большой файл и, чтобы пользователь не скучал, пишет процент от выполненной загрузки и предполагаемое оставшееся время:

Листинг

FILE = 'boost–1.31.0–9.src.rpm'

URL = 'http://download.fedora.redhat.com/pub/fedora/linux/core/3/SRPMS/' + FILE

def download(url, file):

import urllib, time

start_t = time.time()

def progress(bl, blsize, size):

dldsize = min(bl*blsize, size)

if size != -1:

p = float(dldsize) / size

try:

elapsed = time.time() - start_t

est_t = elapsed / p — elapsed

except:

est_t = 0

print "%6.2f %% %6.0f s %6.0f s %6i / %-6i bytes» % (

p*100, elapsed, est_t, dldsize, size)

else:

print "%6i / %-6i bytes» % (dldsize, size)

urllib.urlretrieve(URL, FILE, progress)

download(URL, FILE)

Эта программа выведет примерно следующее (процент от полного объема закачки, прошедшие секунды, предполагаемое оставшееся время, закачанные байты, полное количество байтов):

Листинг

0.00 % 1 s 0 s 0 / 6952309 bytes

0.12 % 5 s 3941 s 8192 / 6952309 bytes

0.24 % 7 s 3132 s 16384 / 6952309 bytes

0.35 % 10 s 2864 s 24576 / 6952309 bytes

0.47 % 12 s 2631 s 32768 / 6952309 bytes

0.59 % 15 s 2570 s 40960 / 6952309 bytes

0.71 % 18 s 2526 s 49152 / 6952309 bytes

0.82 % 20 s 2441 s 57344 / 6952309 bytes

Функции для анализа URL

Согласно документу RFC 2396 URL должен строиться по следующему шаблону:

Листинг

scheme://netloc/path;parameters?query#fragment

где

Листинг

scheme

Адресная схема. Например: http, ftp, gopher.

Листинг

netloc

Местонахождение в сети.

Листинг

path

Путь к ресурсу.

Листинг

params

Параметры.

Листинг

query

Строка запроса.

Листинг

frag

Идентификатор фрагмента.

Одна из функций уже использовалась для формирования URL — urllib.urlencode(). Кроме нее в модуле urllib имеются и другие функции:

Листинг

quote(s, safe='/')

Функция экранирует символы в URL, чтобы их можно было отправлять на web–сервер. Она предназначена для экранирования пути к ресурсу, поэтому оставляет '/' как есть. Например:

Листинг

>>> urllib.quote(«[email protected]»)

'rnd%40onego.ru'

>>> urllib.quote(«a = b + c»)

'a%20%3D%20b%20%2B%20c'

>>> urllib.quote(«0/1/1»)

'0/1/1'

>>> urllib.quote(«0/1/1», safe="")

'0%2F1%2F1'

quote_plus(s, safe='')

Функция экранирует некоторые символы в URL (в строке запроса), чтобы их можно было отправлять на web–сервер. Аналогична quote(), но заменяет пробелы на плюсы.

Листинг

unquote(s)

Преобразование, обратное quote_plus(). Пример:

Листинг

>>> urllib.unquote('a%20%3D%20b%20%2B%20c')

'a = b + c'

unquote_plus(s)

Преобразование, обратное quote_plus(). Пример:

Листинг

>>> urllib.unquote_plus('a+=+b+%2B+c')

'a = b + c'

Для анализа URL можно использовать функции из модуля urlparse:

Листинг

urlparse(url, scheme='', allow_fragments=1)

Разбирает URL в 6 компонентов (сохраняя экранирование символов): scheme://netloc/path;params?query#frag

Листинг

urlsplit(url, scheme='', allow_fragments=1)

Разбирает URL в 6 компонентов (сохраняя экранирование символов): scheme://netloc/path?query#frag

Листинг

urlunparse((scheme, netloc, url, params, query, fragment))

Собирает URL из 6 компонентов.

Листинг

urlunsplit((scheme, netloc, url, query, fragment))

Собирает URL из 5 компонентов.

Пример:

Листинг

>>> from urlparse import urlsplit, urlunsplit

>>> URL = «http://google.com/search?q=Python»

>>> print urlsplit(URL)

('http', 'google.com', '/search', 'q=Python', '')

>>> print urlunsplit(

… ('http', 'google.com', '/search', 'q=Python', ''))

http://google.com/search?q=Python

Еще одна функция того же модуля urlparse позволяет корректно соединить две части URL — базовую и относительную:

Листинг

>>> import urlparse

>>> urlparse.urljoin('http://python.onego.ru', 'itertools.html')

'http://python.onego.ru/itertools.html'

Возможности urllib2

Функциональности модулей urllib и urlparse хватает для большинства задач, которые решают сценарии на Python как web–клиенты. Тем не менее, иногда требуется больше. На этот случай можно использовать модуль для работы с протоколом HTTP — httplib — и создать собственный класс для HTTP–запросов (в лекциях модуль httplib не рассматривается). Однако вполне вероятно, что нужная функциональность уже имеется в модуле urllib2.

Одна из полезных возможностей этих модулей — доступ к web–объектам, требующий авторизации. Ниже будет рассмотрен пример, который не только обеспечит доступ с авторизацией, но и обозначит основную идею модуля urllib2: использование обработчиков (handlers), каждый из которых решает узкую специфическую задачу.

Следующий пример показывает, как создать собственный открыватель URL с помощью модуля urllib2 (этот пример взят из документации по Python):

1 ... 37 38 39 40 41 42 43 44 45 ... 62 ВПЕРЕД
Перейти на страницу:
Комментариев (0)
название