пятница, 14 сентября 2012 г.

Python getitem

Python getitem (value, index) позволяет получить значение value по индексу index.

Пример Python getitem (value, index).

operator.__getitem__(a, b)

# Возвращает значение a по инедксу b.

Python time sleep

Python time sleep (seconds) позволяет сделать паузу во время выполнения сценария Python. В результате выполнения time.sleep () на заданное число секунд приостанавливается работа всего сценария. Аргументом функции sleep может быть число с плавающей точкой для указания более точного времени простоя.

Фактическое время приостановки скрипта может быть меньше, чем вы установили, из-за того, что любой пойманный сигнал в Python может прервать выполнение команды time.sleep (). Кроме того, время приостановки может быть более длительным, чем требуется, из-за работы других сценариев в системе.

Пример Python time.sleep ()

import time
time.sleep(5)

# Получается пауза в 5 секунд, при работе скрипта.

Python len

Python len (s) позволяет подсчитать число символов в строке, а также число элементов в массиве.

Подсчет числа символов в строке 

Первый пример Python len ()


result = len ('I am John')
print result

# В результате выполнения кода на экране появится число символов в строке:  9

Второй пример Python len ()


something = 'Wikipedia'
result = len (something)
print result

# В результате выполнения кода на экране появится число символов в строке:  9

Третий пример Python len ()


s1 = u'Длина этого текста равна 27'
result = len (s1)
print result

# В результате выполнения кода на экране появится число символов в строке: 27

Четвертый пример Python len ()


text = 'Какой-то текст вперемешку с latin-ицей из PosgreSQL'
text = unicode (text, ‘utf-8’)
result = len (text)
print result

Подсчет числа элементов в массиве

p = ['Wikipedia', 'Wiktionary', 'Wikibooks']
result = len (p)
print result

# В результате выполнения кода на экране появится число элементов в массиве: 3

четверг, 13 сентября 2012 г.

Python для начинающих

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

Python очень легкий и мощный язык программирования. Вам не надо будет запоминать и вводить много лишних символов, которые Вы можете встретить в Си-подобных языках. 

Программный код на Python читается легче, чем в других языках программирования, в результате чего многократное использование и обслуживание кода выполняется гораздо проще, чем использование программного кода на других языках сценариев. Python содержит самые современные механизмы многократного использования программного кода, каким является ООП.

В составе Python поставляется большое число собранных и переносимых функциональных возможностей, известных как стандартная библиотека. Эта библиотека предоставляет Вам массу возможностей, востребованных в прикладных программах, начиная от поиска текста по шаблону и заканчивая сетевыми функциями. Python допускает расширение как за счёт ваших собственных библиотек, так и за счёт библиотек, созданных другими разработчиками.

Большая часть программ на языке Python выполняется без изменений на всех основных платформах. Перенос программного кода из Linux в Windows заключается в простом копировании файлов программ с одной машины на другую.

По сравнению с компилирующим, или строго типизированными языками, такими как С, С++ или Java, Python во много раз повышает производительность труда разработчика. Объем программного кода на языке Python обычно составляет треть, или даже пятую часть эквивалентного программного кода на языке С++ или Java, что означает меньший объем ввода с клавиатуры, меньшее количество времени на откладку и меньший объем трудозатрат на сопровождение. Кроме того, программы на языке Python запускаются сразу же, минуя длительные этапы компиляции и связывания, необходимые в некоторых других языках программирования, что еще больше увеличивает производительность труда программиста.

Плюсы Python состоят еще в том, что по нему есть масса качественной литературы.

Вот источники, которые помогут Вам познакомиться ближе с Python.

Настоятельно рекомендую прочитать первым делом книгу - Марк Лутц. Изучаем Python, 4-е издание. Книга переведена на русский язык.

http://old.books.ru/img/816603.jpg

symbol.ru/date/816603.html

Для тех, кто знает английский, можно прочитать документацию на официальном сайте Python. Там всё довольно понятно описано.

docs.python.org

Неплохой ресурс - Основы программирования на Python. Учебник. Вводный курс.

younglinux.info/pdf 

Язык программирования Python. Объясняется всё довольно доступно и на русском.

python.ru/files/book-ods.pdf

Хорошая книга, тоже всё доступно и на русском — Python. Подробный справочник, 4-е издание.

http://old.books.ru/img/784182.jpg

symbol.ru/date/784182.html

А если же Вы более принимаете информацию по видео, то могу посоветовать уроки от компании Google, которые ведёт Ник Парланте - ученик из Стэнфорда. Шесть видеолекций на YouTube. Но в бочке мёда тут есть капля дёгтя Ведёт он на английском языке с английскими субтитрами. Но надеюсь, что остановит это немногих.

youtube.com/watch?v=tKTZoB2Vjuk







Что делать, если я прочитал книги, но не знаю как применять знания?

Без паники!
Советую почитать книгу Марк Лутц. Программирование на Python (4-е издание). Ранее было "изучаем", а тут "Программирование". В "Изучаем"  Вы получаете знания Python, в "Программирование" Марк Вас учит как их применять в Ваши будущие программы. Книга очень полезная. И думаю одной её Вам хватит.

http://old.books.ru/img/841171.jpg

symbol.ru/date/841171.html

Хочу практики!

Легко.
Выше я писал о видеолекциях от Ника Парланте на YouTube, но у них есть также некие задачки на сайте. Интересные задачки, советую каждому. На английском.

code.google.com/intl/uk/edu/languages/google-python-class/exercises/basic.html

Недавно школа программирования Codecademy открыла интерактивные Python-курсы. После прохождения каждого мини-курса, Вам будет позволено пройти некую "практику". Уроки ведутся на английском, но всё доступно и понятно. Начинается с переменных и типов данных.

codecademy.com/ru/courses/introduction-to-python-6WeG3/0?curriculum_id=4f89dab3d788890003000096

И на окончание - хорошие закрепляющие и начинающие курсы. Learn Python The Hard Way.

learnpythonthehardway.org/book

Python Парсинг сайта

В данной теме парсинга сайтов на Python будут освещены следующие возможности языка Python:
- парсинг страницы сайта с помощью простого регулярного выражения;
- скачивание файла с web-страницы;
- отправка скаченного файла через smtp-сервер;
- написание небольшого обобщающего скрипта.

Python Парсинг сайта.

Для работы с вебом используется модуль urllib2. Данный модуль позволяет получать содержимое страниц.

Воспользуемся следующим кодом для получения содержимого страницы:

def download_by_link(self, link):
        content = urllib2.urlopen(link).read() # считываем HTML-код страницы, расположенный по адресу link
        link_on_file, filename = self.get_filename(content) # получаем из HTML-кода ссылку для скачивания
        fullname = self.get_dir_name() + filename
        if self.is_new_version(fullname):
            with open(fullname, 'w') as fd:                               
                content = urllib2.urlopen(link_on_file).read() # скачиваем файл
                fd.write(content)                                                   
        return self.get_prepared_files(fullname)

with - гарантирует, что ресурсы, захваченные в данном блоке будут освобождены, как только мы выйдем за его пределы (в случае, обычного выхода или, например, исключения).

Для того, чтобы получить ссылку на архив со свежим выпуском газеты используем модуль re реализующий всю мощь регулярных выражений:

   def get_filename(self, text):
         pattern = r'(?P<link>http:\/\/archive\.sport\-express\.ru\/pdf\/(?P<filename>[0-9]+\.zip))'
         match = re.search(pattern, text)
         return match.group('link'), match.group('filename')

(?P ) - так задается именованная группа в регулярном выражении. Таким образом мы получает линк и имя файла.

class SportExpress():
    def get_from(self):
        return 'username@mail.ru'

    def get_title(self):
        return 'Sport Express subscribe'

    def get_text(self):
        return "Good morning! Don't be lazy - read newspaper!"

    def get_prepared_files(self, archive):                                     
        directory_to_extract = archive[:archive.rfind('.')]              
        zipfile.ZipFile(archive).extractall(directory_to_extract) # опасно использовать на произвольном содержимом
        res = glob.glob(directory_to_extract+'/*.*')
        return res

    def get_dir_name(self):
        dir_name = 'archive/sport-express/'
        if not os.path.exists(dir_name):
            os.mkdir(dir_name)
        return dir_name

    def is_new_version(self, filename):
        return os.path.exists(self.get_dir_name() + filename)

Создаем письмо.

Теперь, когда у нас есть содержимое, которое мы планируем высылать, неплохо было бы создать для него конверт.
Для работы с письмами в Python используется модуль email:

import email, email. encoders, email.mime.text, email.mime.base

class MessageBase:
    def __init__(self, subscriber):
        self.__to_addresses = subscriber.get_subscribers()
        self.__from_address = subscriber.get_from()
        self.__message = self.__create_message(subscriber.get_title(), subscriber.get_text())

Для начала создадим простое текстовое письмо.

 def __create_message(self, subject, text):
        email_msg = email.MIMEMultipart.MIMEMultipart('mixed')
        email_msg['Subject'] = subject
        email_msg['From'] = self.get_from()
        email_msg['To'] = ', '.join(self.get_to())
        email_msg.attach(email.mime.text.MIMEText(text,'text'))
        return email_msg

Пришла пора создать функцию для прикрепления файла. Если хотите, чтобы почтовый клиент мог открыть вложения необходимо указывать file_type.

    def attach_file(self, filename, file_link, file_type = 'unknown'):
        file_message = email.mime.base.MIMEBase('application', file_type)
        file_message.set_payload(file(file_link).read())
        email.encoders.encode_base64(file_message)
        file_message.add_header('Content-Disposition','attachment;filename='+filename)
        self.__message.attach(file_message)
        return True

Для того, чтобы получить из сообщения сообщение для отправки нужно вызвать метод as_string().

    def get_text(self):
        return self.__message.as_string()

Отправляем письмо.

Теперь когда есть письмо, нужно уметь его отправлять. За отправку писем в Python отвечает smtplib.

import smtplib

from message import MessageBase

class SmtpBase:
    def __init__(self, serverhost):
        self.__smtp_server = serverhost

    def open(self):
        self.__server = smtplib.SMTP(self.__smtp_server)
        self.__server.login('<enter your smtp login>', '<enter your smtp password>')

    def close(self):
        self.__server.quit()

Представим что у нас есть класс Message с методами get_from(), get_to(), get_text().

    def send_mail(self, message):
        for message_to in message.get_to():
            self.__server.sendmail(message.get_from(), message_to, message.get_text())

Чтобы поддерживать with необходимо добавить пару методов:

    def __enter__(self):
        self.open()
        return self

    def __exit__(self, type, value, traceback):
        if type:
            print '%s: %s %s' % (type, value, traceback)
        self.close()

Обобщаем сценарий.

Итоговый код выглядит так:

from subscriber_sex import SportExpress
from smtp import SmtpBase
from message import MessageBase

b = SportExpress()
filenames = b.download_by_link('http://www.sport-express.ru')

msg = MessageBase(b)
for file in filenames:
    msg.attach_file(file[file.rfind('/')+1:], file, 'pdf')

with SmtpBase('smtp.yandex.ru') as s:
    s.send_mail(msg)

После каждого запуска данного кода Python и парсинга сайта свежий выпуск "Спорт-Экспресс" посылается прямо в ваш почтовый ящик!

Python 3

Python 3 – новая версия мощного высокоуровневого языка программирования общего назначения, признанного разработчиками программного обеспечения. Одна из самых сильных сторон книги – многолетний опыт ее автора, Марка Саммерфилда, ведущего специалиста по этому языку. В руководство по программированию включены необходимые для освоения языка на практике методы разработки программ с использованием стандартной или сторонней библиотеки для языка программирования Python 3. Уровень сложности в книге постепенно повышается по мере ее чтения: начиная с описания ключевых элементов Python, автор переходит к более сложным темам, таким как распределение вычислительной нагрузки между несколькими процессами и потоками, использование сложных типов данных, управляющих структур и функций. Одним из последних этапов освоения языка Python 3 является в книге создание приложений для работы с базами данных SQL и с файлами DBI. Книга "Программирование на Python 3. Подробное руководство" обладает как справочным, так и учебным материалом, насыщена увлекательными примерами, доступными также и на специальном сайте издания. Код примеров был предварительно протестирован с окончательным релизом Python в операционных системах Windows, Linux и Mac OS X.

Django Windows

Установка Django Windows.

Перед началом установки Django на Windows необходимо скачать и установить Python (Windows binary) и TortoiseSVN (клиент для работы с SVN).

Скачиваем Django Windows.

После установки TortoiseSVN начинаем скачивать Django.
Создаем папку django. Заходим в папку django, в которую мы хотим скачать дистрибутив Django. Нажимаем правую кнопку мыши и в появившемся меню выбираем SVN Checkout.

установка django











В появившемся окне вводим URL: http://code.djangoproject.com/svn/django/trunk/ жмем ОК и дистрибутив начинает скачиваться.

установка django

После успешного завершения скачивания Django, в созданную вами папку django в операционной системе Windows, появится надпись
Updated X:\folder
Completed At revision 6710 (число будет другим)

установка django

Устанавливаем Django на Windows.

В Windows нажимаем на кнопку  Пуск > Выполнить (или на клавиатуре нажимаем одновременно значок Windows + R).
В окошке вводим:

cmd

и нажимаем Enter.


В результате выполения команды cmd откроется черное окно консоли командной строки.


В окне командной строки вводим:
cd \
cd \django
python setup.py install
нажимая кнопку Enter после ввода каждой строки.

Теперь необходимо поменять переменные окружения, чтобы можно было вводить django-admin.py, а не полный путь к нему (типа C:\python25\somefolder\django-admin.py).

Для этого заходим в свойства системы (жмем одновременно на клавиатуре значок Windows + Pause, или Правой кнопкой мыши на "Мой компьютер" > Свойства). Там находим переменные окружения, потом находим к нижней части окна Path, жмем "Правка" и в конце дописываем C:\Python25;C:\Python25\Scripts.
После этого перезагружаем Windows.

С этого момента Django Windows установлен.