Быстрый в изучении - мощный в программировании
Скрипт ИНВЕСТОР на Python

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

Все уроки по PyQt5

PyQt5 реализован как комплект Python-модулей. Он включает в себя около 620 классов и 6000 функций и методов...

Скрипт отправки SMS через Python

Была задача отправить SMS-ки большому списку номеров телефона с уточнением цены за всю рассылку "До" ее отправки...

Archy

Cоздаем скриншот любого сайта на Python с помощью QtWebKit

Здравствуй дорогой читатель! Как гласит пословица, одна картинка стоит тысячи слов. В нашем случае, стоимость одной картинке дойдет до несколько десятков строк кода. Встает вопрос, для чего вообще нужно делать скриншоты сайтов?

Тут ответы варьируют от человека к человеку, мне вот нужен был скрипт который раз в неделю сделает скриншот главной странице сайта. Вслед чего, последние две картинки сравнивались побайтно. В случае эквивалентности, скрипт прекратил работу в течение недели после чего снова картинки N и N-1 приступили к сравниванию. В случае когда байты картинок различались, скрипт автоматически запустил другой скрипт, в моем случае был (парсер or граббер or скраппер), тут на ваше усмотрение.

И так, для установки QtWebKit придется немного попотеть. Бывалые программисты/сисадмины сделают это одной левой. Тут pip3 и easy_install не катит, нужно установить бинарные пакеты.Далее...

Чтобы обобщить различия между методами __getattr__ и __getattribute__, в следующем примере используются оба метода для реализации доступа к трем атрибутам, в числе которых: attr1 - атрибут класса, attr2 - атрибут экземпляра и attr3 - виртуальный атрибут, значение которого вычисляется при обращении к нему:

class GetAttr:
    attr1 = 1
    def __init__(self):
        self.attr2 = 2
    def __getattr__(self, attr):   # Только для неопределенных атрибутов
        print('get: ' + attr)      # Не attr1: наследуется от класса
        return 3                   # Не attr2: хранится в экземпляре
    
X = GetAttr()
print(X.attr1)
print(X.attr2)
print(X.attr3)
print('-' * 40)
class GetAttribute(object):
    attr1 = 1
    def __init__(self):
        self.attr2 = 2
    def __getattribute__(self, attr):  # Вызывается всеми операциями присваивания
        print('get: ' + attr)          # Для предотвращения зацикливания используется суперкласс
        if attr == 'attr3':
            return 3
        else:
            return object.__getattribute__(self, attr)
        
X = GetAttribute()
print(X.attr1)
print(X.attr2)
print(X.attr3)
Далее...

intructzia-try-else-python.png

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

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

Пример:

try:
    # Выполняемый код
except:
    # Обработка исключения
# Программа оказалась здесь потому, что исключение было обработано
# или потому, что его не возникло?

Точно так же, как инструкция else в операторах цикла делает причину выхода из цикла более очевидной, предложение else в инструкции try однозначно и очевидно сообщает о произошедшем:Далее...

mp3 python

В данной статье мы покажем как можно воспроизвести аудио файлы в разных библиотеках на Python. Python универсальный язык программирование и в нем можно манипулировать не только текстом и цифрами но и аудио-видео файлами. Ниже мы покажем код как работать с mp3 в разных библиотеках.

Библиотека PyGame

Что же такое Pygame? Pygame - это кроссплатформенная библиотека языка Python, предназначенная для написания компьютерных игр и мультимедиа приложений. PyGame базируется на библиотеке SDL.

import pygame
pygame.init()
song = pygame.mixer.Sound('file.mp3')
clock = pygame.time.Clock()
song.play()
while True:
    clock.tick(60)
pygame.quit()

Далее...

sozdanie-slovarei-v-python.png

Здравствуй дорогой гость, читатель или подписчик. Сегодня мы поговорим о создании словарей на любимым нами языке Python.

Для наглядного примера, мы с вами создадим англо-русский словарь, индексами в котором будут служить строковые значения. Один из способов создать словарь - начать с пустого словаря и добавлять в него элементы постепенно. Запомните, пустой словарь обозначается фигурными скобками {}:

>>> engToRus = {}
>>> engToRus['one'] = 'odin'
>>> engToRus['two'] = 'dva'

Как вы наверное заметили, первый оператор присваивания создает словарь названный engToRus, остальные операторы добавляют новые элементы в словарь. Мы можем распечатать текущее значение словаря обычным способом:Далее...

В этой статье, мы собираемся выполнять обратную операцию. Мы будем читать изображение из таблицы базы данных. В прошлой статье мы записали данные изображения в таблицу, теперь мы превратим эти данные обратно в изображение.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
def writeImage(data):
    try:
        fout = open('woman2.jpg','wb')
        fout.write(data)
    
    except IOError, e:    
        print "Error %d: %s" % (e.args[0], e.args[1])
        sys.exit(1)
        
    finally:
        if fout:
            fout.close()       
    
try:
    con = lite.connect('test.db')
    cur = con.cursor()    
    cur.execute("SELECT Data FROM Images LIMIT 1")
    data = cur.fetchone()[0]
    writeImage(data)
    
except lite.Error, e:
    print "Error %s:" % e.args[0]
    sys.exit(1)
    
finally:
    if con:
        con.close()

Далее...

Загрузка изображения в базу данных SQLite

В этой статье, мы собираемся вставить данные изображения в базу данных SQLite. Следует отметить, что некоторые программисты выступают против помещения изображений в базы данных. Здесь мы только покажем, как делать это. Мы не станем останавливаться на технических проблемах того, сохранять ли изображения в базах данных или нет. Это применяется в зависимости от ситуации, когда эффективнее сохранять в базе чем в файлах.

sqlite> CREATE TABLE Images(Id INTEGER PRIMARY KEY, Data BLOB);

Для этого примера, мы создаём новую таблицу, называемую Images. Для изображений мы используем тип данных BLOB, который расшифровывается как Binary Large Objects.

Далее...

Запросы с параметрами в SQLite

Сейчас мы научимся работать с параметрами при создании запроса. Когда мы используем параметризованные запросы, мы используем местозаполнители вместо прямого написания значений в SQL запросе. Запросы с указанием параметров отдельно увеличивают безопасность и производительность.

Python модуль sqlite3 поддерживает два типа заполнителей: знаки вопроса и именованные заполнители.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
uId = 1
uPrice = 62300 
 
con = lite.connect('test.db')
with con:
    cur = con.cursor()    
    cur.execute("UPDATE Cars SET Price=? WHERE Id=?", (uPrice, uId))        
    con.commit()
    print "Number of rows updated: %d" % cur.rowcount

Мы обновляем цену одной машины. В этом примере кода, мы используем заполнители типа «знак вопроса».

Далее...

Вывод данных из таблицы SQLite

В предыдущей статьи [часть 2] мы рассмотрели моменты создания таблицы в базу данных и внесения данных в эту таблицу. В данной статье покажем пример как получить данные из таблицы.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sqlite3 as lite
import sys
 
con = lite.connect('test.db')
 
with con:    
    cur = con.cursor()    
    cur.execute("SELECT * FROM Cars")
    rows = cur.fetchall()
 
    for row in rows:
        print row

В этом примере, мы извлекаем все данные из таблицы Cars.

Далее...

Занесение данных в таблицу SQLite

Мы создадим таблицу Cars и внесем несколько строк данных в неё.

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sqlite3 as lite
import sys
 
# Подключаемся к базе данных
con = lite.connect('test.db')
 
with con:
    cur = con.cursor()    
    # Создаем таблицу
    cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT)")
    # Вносим данные
    cur.execute("INSERT INTO Cars VALUES(1, 'Audi', 52642)")
    cur.execute("INSERT INTO Cars VALUES(2, 'Mercedes', 57127)")
    cur.execute("INSERT INTO Cars VALUES(3, 'Skoda', 9000)")
    cur.execute("INSERT INTO Cars VALUES(4, 'Volvo', 29000)")
    cur.execute("INSERT INTO Cars VALUES(5, 'Bentley', 350000)")
    cur.execute("INSERT INTO Cars VALUES(6, 'Citroen', 21000)")
    cur.execute("INSERT INTO Cars VALUES(7, 'Hummer', 41400)")
    cur.execute("INSERT INTO Cars VALUES(8, 'Volkswagen', 21600)")

Данный скрипт создаёт таблицу Cars и вставляет 8 строк в таблицу.

cur.execute("CREATE TABLE Cars(Id INT, Name TEXT, Price INT)")

Этот SQL-запрос создает новую таблицу Cars. Таблица имеет три столбца.

cur.execute("INSERT INTO Cars VALUES(1,'Audi',52642)")
cur.execute("INSERT INTO Cars VALUES(2,'Mercedes',57127)")

Далее...