32bit_me: (Default)

Запись опубликована 32 bit.me. You can comment here or there.

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

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

Далее под катом.

Читать запись полностью »

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

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

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

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

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

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

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

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

32bit_me: (Default)

Originally published at 32 bit.me. You can comment here or there.

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

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

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

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

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

Profile

32bit_me: (Default)
32bit_me

April 2017

S M T W T F S
      1
2 34 5678
9101112 1314 15
16171819202122
23242526272829
30      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 04:40 pm
Powered by Dreamwidth Studios