Category: Python

Янв 16 2014

Raspberry Pi и контроль температуры

Я уже писал про самодельную «Time Capsule» на базе Raspberry Pi. Она работает хорошо, если не считать проблемы с перегревом. В корпусе устройства установлен вентилятор, но он издаёт при работе существенный шум.

Итак, я решил подключить к RPi термодатчик и сделать автоматическое управление вентилятором.

Далее под катом.
Read more »

Апр 10 2011

Python и urllib

Столкнулся с неожиданной проблемой при использовании библиотеки urllib (язык Python 3).

Допустим, нужно получить html-код документа, лежащего по определённому адресу. Для этого предназначена функция urllib.request.urlopen(url), возвращающая объект, имеющий интерфейс файла (т.е. поддерживающий те же функции, что и обычные файловые объекты). Далее можно просто прочитать из него текст в соответствующей кодировке: fileobj.read().decode(‘utf-8’), где fileobj — объект, возвращённый функцией urlopen().

При возникновении ошибки при открытии url функция urlopen() вызывает исключение. Поэтому его нужно обработать и повторять попытку открытия url до тех пор, пока операция не завершится без вызова исключения:

while 1:
  try:
    html = urllib.request.urlopen(url).read().decode('utf-8')
  except: print('Url Open Error') #Здесь можно записывать сообщения об ошибке в консоль или в лог
  else:
    break

Однако, проблема состоит в том, что urlopen() не всегда вызывает исключение. Если сервер не отвечает, она просто висит, полностью блокируя работу программы. При этом, при перезапуска программы вручную, документ нормально открывается. Поэтому в качестве параметра ей нужно передавать ещё и величину тайм-аута в секундах:

while 1:
  try:
    html = urllib.request.urlopen(url, timeout = 10).read().decode('utf-8')
  except: print('Url Open Error') #Здесь можно записывать сообщения об ошибке в консоль или в лог
  else:
    break

Теперь всё работает правильно.

Апр 06 2011

Книга «Изучаем Python»

Книга «Изучаем Python», автор Марк Лутц, является весьма объёмным (848 стр.) введением в язык Python.

В книге рассмотрена версия Python 2.5, текущая версия Python 3.2, поэтому при чтении текста  выполнении тестовых заданий придётся вносить некоторые коррективы в излагаемый материал. Однако эти отличия не очень велики.

Плюсы книги: синтаксис языка изложен очень подробно, с множеством примеров.

Минусы: в книге не рассматриваются библиотеки Python, и не рассматриваются какие-либо прикладные задачи, поэтому после её прочтения всё равно потребуется дополнительная литература.

Цитата из книги (стр. 747): «Если вы забрались так далеко, что читаете эти строки, можете смело считать себя Официальным Программистом на языке Python (и можете не стесняться упоминать о знании этого языка в своих резюме)».