Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

Все уроки по PyQt5

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

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

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

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

Подписаться на эту рубрику по RSS

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

создание базы sqlite

Попробуем создать новую базу данных в SQLite. Запускаем командную строку. Для этого в меню Пуск выбираем пункт Выполнить. В открывшемся окне набираем команду cmd и нажимаем кнопку ОК. Откроется черное окно, в котором будет приглашение для ввода команд. Переходим в папку C:\book, выполнив команду:

cd C:\book

В командной строке должно быть приглашение:

C:\book

По умолчанию в консоли используется кодировка cp866. Чтобы сменить кодировку на cp1251, в командной строке вводим команду:

chcp 1251

Далее...

Модуль shelve в Python

Модуль shelve Python позволяет сохранять объекты под определенный ключом (задается в виде строки) и определяется интерфейс доступа, сходный со словарями. Для сериализации объекта используется возможности модуля pickle, а чтобы записать получившуюся строку по ключу в файл , применяется модуль anydbm. Все эти действия модуль shelve производит незаметно для нас. Чтобы открыть файл с базой объектов, используется функция open(). Функция имеет следующий формат:

open(<Путь к файлу>[, flag="c"[, protocol=None[, writeback=False]]])

В необязательном параметре flag можно указать один из режимов открытия файла:

  • r - Только для чтения
  • w - чтение и запись
  • c - чтение и запись (значение по умолчанию). Если файл не существует, он будет создан.
  • n - чтение и запись. Если файл не существует, он будет создан. Если файл существует, он будет перезаписан.

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

close() - закрывает файл с базой данных. В качестве примера создадим файл и сохран6им в нем список кортежа.

>>> import shelve
>>> db = shelve.open("file2.txt")
>>> db['language'] = ['ru', 'rn', 'ua']
>>> db['colors'] = ['red', 'blue', 'green']
>>> db['language'], db['colors']
(['ru', 'rn', 'ua'], ['red', 'blue', 'green'])
>>> db.close()
Далее...

Как защитить Python-код

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

Можно было бы просто отдавать клиентам байт-код, который создает python при первом запуске скрипта. Например, запустили test.py, рядом появился test.pyc, его и продаем. Однако в сети есть скрипты, которые восстанавливают из него исходный код с точностью до байта.

Поэтому, чтобы закрыть сорцы скрипта - его надо скомпилировать. Для этого, с помощью расширения cython его можно перевести в Си код, который и скомпилировать обычными инструментами, вроде make.

Рассмотрим решение пошагово:

- Конвертируем python-скрипт в Си:

cython -3 СКРИПТ.py

Получаем СКРИПТ.c - это исходный код python-модуля, который выполняет то же самое что и питон-скрипт.

Далее...

Права доступа к файлам и каталогам

В операционной системе Unix для каждого объекта (файла или каталога) назначаются права доступа для каждой разновидности пользователей - владельца, группы и прочих. Могут быть назначены следующие права доступа: чтение, запись, выполнение.

Права доступа обозначаются буквами:

r - файл можно читать, а содержимое каталога можно просматривать.

w - файл можно модифицировать, удалить и переименовать, а в каталоге можно создать или удалить файлы. Каталог можно переименовать или удалить.

x - файл можно выполнить, а в каталоге можно выполнить операции над файлами, в том числе производить поиск файлов в нем.

Права доступа к файлу определяются записью типа:

-rw-r--r--

Далее...

Методы для работы со словарями

Для работы со словарями предназначены следующие методы:

keys() и values() - позволяют получить список всех ключей и значений соответственно:

>>> d = {'a': 1, 'b': 2}
>>> k = d.keys(); v = d.values()
>>> print k, v
['a', 'b'] [1, 2]

Можно также воспользоваться методами iterkeys() и itervalues(), которые возвращают не список ключей и значений, а итератор. Пример:

>>> d = {'a': 1, 'b': 2}
>>> for i in d.iterkeys(): print i,
a b
 
>>> for i in d.itervalues(): print i,
1 2

Далее...

Перебор элементов словаря

Перебрать все элементы списка можно благодаря циклу for, но словари Python не являются последовательностями. В качестве примера выведем элементы словаря двумя методами. Первый способ использует метод keys(), возвращающий список всех ключей словаря. Второй способ появился в последних реализах Python. В этом случае мы просто указываем словарь в качестве параметра. На каждой интерации цикла будет возвращаться ключ, с помощью которого внутри цикла можно получить значение, соответствующее этому ключу.

Перебор элементов словаря

# -*- coding: utf-8 -*-
cars = {
    'BMW': 'x5',
    'Mercedes-Benz': 'E220',
    'Audi': 'Q7'
}
 
for key in cars:
    print "%s -> %s" % (key, cars[key])
 
print '-' * 15
print 'Пример 2'
print '-' * 15
 
for key in cars.keys():
    print "%s -> %s" % (key, cars[key])

Далее...

Создание и запуск сайтов на Python

Язык программирования Python широко применяется для создания web-сайтов и используется для решения различных проблем и задач которые возникают перед программистом. Во-первых, код на языке программирования Python предоставляет простые и удобные методы для генерирования набора статических HTML-страниц, которые будут обслуживаться веб-сервером. Например, сценарии может принимать некоторое содержимое и добавлять к нему элементы оформления, типичные для веб-сайта (панель навигации, боковую панель, рекламу, стили и так далее). Все это фактически сводится к работе с файлами и обработке текста.

Во-вторых, скрипты написанные на языке программирования Python могут применятся для создания динамических сайтов т.е. в связке MySQL + JavaScript + Ajax + Python. Сайт может работать на базе обычного веб сервера Nginx или Apache и отправлять данные из форм сценарию на языке Python для обработки и возвращение результата работы. В данном случае Python используется как обработчик данных из форм.

Далее...

Модуль StringIO в Python

Модуль StringIO позволяет работать со строкой как с файловым объектом. Все операции с файловым объектом производится в оперативной памяти. Для создания нового объекта предназначен класс StringIO. Формат конструктора класса:

StringIO([<Начальное значение>])

Если параметр не указан, то начальным значением будет пустая строка. После создания объекта указатель текущей позиции устанавливается на начало "файла". Объект, возвращаемый конструктором класса, имеет следующие методы:

Далее...

Классы встроенных исключений в Python

Все встроенные исключения в языке Python представлены в виде классов. Иерархия встроенных классов исключений показана в листинге ниже.

Иерархия встроенных классов исключений

BaseException
    GeneratorExit (в Python 2.6 и выше)
    KeyboardInterrupt
    SystemExit
    Exception
        GeneratorExit (в Python 2.5)
        StopIteration
        Warning
            BytesWarning (в Python 2.6 и выше)
            DeprecationWarning, FutureWarning, ImportWarning
            PendingDeprecationWarning, RuntimeWarning, SyntaxWarning
            UnicodeWarning, UserWarning
        StandardError
            ArithmeticError
                FloatingPointError, OverflowError, ZeroDivisionError
            AssertionError
            AttributeError
            BufferError (в Python 2.6)
            EnvironmentError
                IOError
                OSError
                    WindowsError
            EOFError
            ImportError
            LookupError
                IndexError, KeyError
            MemoryError
            NameError
                UnboundLocalError
            ReferenceError
            RuntimeError
                NotImplementedError
            SyntaxError
                IndentationError
                    TabError
            SystemError
            TypeError
            ValueError
                UnicodeError
                    UnicodeDecodeError, UnicodeEncodeError
                    UnicodeTranslateError

Основное преимущество использования классов для обработки исключений заключается в возможности указания базового класса для перехвата всех исключений соответствующих классов-потомков. Например, для перехвата деления на ноль мы использовали класс ZeroDivisionError. Если вместо этого класса указать базовый класс ArithmeticError, то будут перехватываться исключения классов FloatingPointError, OverflowError и ZeroDivisionError. Пример:

Далее...

Инструкция with - as в Python

Начиная с версии 2.6, язык Python поддерживает протокол менеджеров контекста. Этот протокол гарантирует выполнение завершающих действий (например, закрытие файла) вне зависимости от того, произошло исключение внутри блока кода или нет. Необходимо заметить, что в Python 2.5 также можно использовать протокол, предварительно указав выражения (в Python 2.6 и выше это выражение указывать не нужно).

from __future__ import with_statement

Для работы с протоколом предназначения инструкции with ... as. Инструкция имеет следующий формат:

with <Выражение>[ as <Переменная>]:
    <Блок, в котором перехватываем исключения>
Далее...