КОРОТКИЙ ДОВІДНИК З PYTHON
В довіднику зібрана колекція з 50 дорогоцінних каменів, щоб закріпити ваші успіхи у вивченні Python.
Основи
1. Запуск сценаріїв Python
На більшості UNIX-систем, можна запустити сценарії Python з командного рядка, наприклад, для сценарію mypyprog.py:
python mypyprog.py
2. Запуск програм на Python з інтерпретатора
Інтерактивний інтерпретатор Python дозволяє вам легко спробувати перші кроки в програмуванні і використанні всіх команд Python. Ви просто вводите кожну команду в командному рядку (>>>), одну за іншою і негайно отримуєте відповідь.
Інтерпретатор Python запускається за допомогою команди python:
Інтерпретатор Python запускається за допомогою команди python:
python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)[GCC 4.3.3] on linux2
Type “help”, “copyright”, “credits”or “license” for more information.
>>> <тут введіть команду>
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)[GCC 4.3.3] on linux2
Type “help”, “copyright”, “credits”or “license” for more information.
>>> <тут введіть команду>
У цьому довіднику весь код, який починається зі знаку >>> означає, що використовується командний рядок Python.
Також важливо пам'ятати, що Python сприймає відступи (tabs) дуже серйозно – тому, якщо ви отримуєте будь-які помилки зі згадуванням відступу, виправіть інтервал табуляції.
Також важливо пам'ятати, що Python сприймає відступи (tabs) дуже серйозно – тому, якщо ви отримуєте будь-які помилки зі згадуванням відступу, виправіть інтервал табуляції.
3. Динамічне введення
У Java, C++ та в інших статично типізованих мовах, необхідно вказати тип даних, що повертаються і аргументи функції. З іншого боку, Python є динамічною універсальною мовою. В Python ви ніколи не повинні явно вказувати тип будь-яких даних. Виходячи з того, яке значення привласнюєте, Python буде відстежувати тип даних усередині.
4. Оператори Python
Python використовує повернення каретки для розділу операторів, а також двокрапку і відступи для поділу коду на блоки. Більшість компільованих мов програмування, таких як C і C++, використовують крапку з комою для розділення операторів і фігурні дужки для окремих блоків коду.
5. Оператори == і =
Python використовує '==' для порівняння і '=' для присвоювання. Python не підтримує вбудовані присвоювання, тому немає жодного ризику випадково присвоїти значення, коли ви насправді хочете, його порівняти.
6. Об’єднання рядків
Ви можете використати ‘+’ для об’єднання рядків.
>>> print (‘Mikro’+’Tik’)
MikroTik
MikroTik
7. Метод __init__
Метод __init__ запускається, як тільки створюється примірник об'єкту класу. Метод корисний, коли хочете зробити будь-яку ініціалізацію зі своїм об'єктом. Метод __init__ аналогічний конструктору в C++, C # або Java.
Приклад:
Приклад:
class Person:
def __init__(self, name):
self.name = name
def sayHi(self):
print (‘Hello, my name is’, self.name)
p = Person(‘Taras’)
p.sayHi()
def __init__(self, name):
self.name = name
def sayHi(self):
print (‘Hello, my name is’, self.name)
p = Person(‘Taras’)
p.sayHi()
Виведення:
python initmethod.py
Hello, my name is Taras
Hello, my name is Taras
8. Модулі
Щоб зберегти свої програми керованим по мірі того, як вони ростуть в розмірах, ви можете розбити їх на кілька файлів. Python дозволяє помістити кілька визначень функцій в файл і використовувати їх як модулі, які можна імпортувати в інші сценарії і програми. Ці файли повинні мати розширення .py.
Приклад:
Приклад:
# файл my_function.py
def minmax(a,b):
if a <= b:
min, max = a, b
else:
min, max = b, a
return min, max
def minmax(a,b):
if a <= b:
min, max = a, b
else:
min, max = b, a
return min, max
Використання модуля:
import my_function
x,y = my_function.minmax(25, 6.3)
x,y = my_function.minmax(25, 6.3)
9. Визначені в модулі імена
Приклад:
Вбудована функція ‘dir()’ може бути використана, щоб з'ясувати, які імена визначає модуль. Повертається сортований список рядків.
>>> import time
>>> dir(time)
[‘__doc__’, ‘__file__’, ‘__name__’,
‘__package__’, ‘accept2dyear’,
‘altzone’, ‘asctime’, ‘clock’,
‘ctime’, ‘daylight’, ‘gmtime’,
‘localtime’, ‘mktime’, ‘sleep’,
‘strftime’, ‘strptime’, ‘struct_
time’, ‘time’, ‘timezone’, ‘tzname’,
‘tzset’]
>>> dir(time)
[‘__doc__’, ‘__file__’, ‘__name__’,
‘__package__’, ‘accept2dyear’,
‘altzone’, ‘asctime’, ‘clock’,
‘ctime’, ‘daylight’, ‘gmtime’,
‘localtime’, ‘mktime’, ‘sleep’,
‘strftime’, ‘strptime’, ‘struct_
time’, ‘time’, ‘timezone’, ‘tzname’,
‘tzset’]
10. Внутрішня документація модуля
Ви можете побачити внутрішню документацію (якщо така є) для імені модуля, переглядаючи .__doc__.
Приклад:
Приклад:
>>> import time
>>> print time.clock.__doc__
clock() -> число у форматы з плаваючою комою
>>> print time.clock.__doc__
clock() -> число у форматы з плаваючою комою
Цей приклад повертає час CPU або реальний час з моменту запуску процесу або після першого виклику clock(). Точність така ж, як і для системних записів.
11. Передача аргументів в сценарій Python
Python дозволяє отримати доступ до всього, що ви передали в сценарій при його виклику. Контент «командного рядка» зберігається в списку sys.argv.
import sys
print sys.argv
print sys.argv
12. Завантаження модулів або команд при запуску
Ви можете завантажити готові модулі або команди при запуску будь-якого скрипта Python за допомогою змінної оточення $PYTHONSTARTUP. Ви можете встановити змінну оточення $PYTHONSTARTUP в файлі, який містить інструкції по завантаженню необхідних модулів або команд.
13. Перетворення рядка в об’єкт дати
Ви можете використати функцію ‘DateTime’ для конвертування рядка в об’єкт дати.
Приклад:
Приклад:
from DateTime import DateTime
dateobj = DateTime(string)
dateobj = DateTime(string)
14. Перетворення списку в рядок для відображення
Ви можете перетворити список в рядок одним із таких способів.
1-й метод:
1-й метод:
>>> mylist = [‘spam’, ‘ham’, ‘eggs’]
>>> print (‘, ‘.join(mylist))
spam, ham, eggs
>>> print (‘, ‘.join(mylist))
spam, ham, eggs
2-й метод:
>>> print (‘\n’.join(mylist))
spam
ham
eggs
spam
ham
eggs
15. Автозаповнення інтерпретатора Python
Ви можете отримати автоматичне заповнення всередині інтерпретатора Python, додавши наступні рядки в ваш файл .pythonrc (або в свій файл для Python для читання під час запуску):
import rlcompleter, readline
readline.parse_and_bind(‘tab: complete’)
readline.parse_and_bind(‘tab: complete’)
Це дозволить Python при натисканні клавіші Tab робити завершення частково набраної функції, метода та імен змінних.
16. Інструмент документації Python
Ви можете запустити графічний інтерфейс для пошуку документації Python скориставшись командою:
pydoc -g
Вам знадобиться пакет python-tk для цієї функції.
17. Сервер документації Python
Ви можете запустити сервер HTTP на вказаному порту локальної машини, що забезпечить доступ в чудовому вигляді до всієї документації Python, включаючи документацію для модулів сторонніх розробників.
pydoc -p <portNumber>
18. Програмне забезпечення для розробників на Python
Є багато інструментів, щоб допомогти розробникам на Python. Ось кілька важливих з них:
IDLE: Вбудований в Python IDE, з функцією автозаповнення, з підписаним спливаючим вікном допомоги та редагування файлів.
IPython: Інше розширення оболонки Python з вкладки-завершенням та іншими функціями.
Eric3: A IDE GUI Python з автозавершенням, класом браузера, вбудованою оболонкою і відладчиком.
WingIDE: Комерційний IDE Python з безкоштовною ліцензією доступний для розробників з відкритим вихідним кодом у всьому світі.
IDLE: Вбудований в Python IDE, з функцією автозаповнення, з підписаним спливаючим вікном допомоги та редагування файлів.
IPython: Інше розширення оболонки Python з вкладки-завершенням та іншими функціями.
Eric3: A IDE GUI Python з автозавершенням, класом браузера, вбудованою оболонкою і відладчиком.
WingIDE: Комерційний IDE Python з безкоштовною ліцензією доступний для розробників з відкритим вихідним кодом у всьому світі.
Вбудовані модулі
19. Виконання функцій в момент зупинки інтерпретатора Python
Можете використати модуль ‘atexit’ для виконання функцій в момент зупинки інтерпретатора Python.
Приклад:
Приклад:
def sum():
print(4+5)
def message():
print(“Executing Now”)
import atexit
atexit.register(sum)
atexit.register(message)
print(4+5)
def message():
print(“Executing Now”)
import atexit
atexit.register(sum)
atexit.register(message)
Виведення:
Executing Now
9
9
20. Перетворення цілих чисел в двійкові, в hex- і восьмеричний код
Python надає простий у використанні функції - bin(), hex() і oct() - для перетворення цілого числа в двійкове, hex- і восьмеричний формати, відповідно.
Приклад:
Приклад:
>>> bin(24)
‘0b11000’
>>> hex(24)
‘0x18’
>>> oct(24)
‘030’
‘0b11000’
>>> hex(24)
‘0x18’
>>> oct(24)
‘030’
21. Перетворення будь-яких символів в UTF-8
Можете використати наступну функцію для перетворення будь яких символів у формат UTF-8:
data.decode(“input_charset_here”).
encode(‘utf-8’)
encode(‘utf-8’)
22. Видалення дублікатів із списків
Якщо хочете видалити дублікати із списку, просто вставте кожний елемент в dict як ключ (в прикладі з ‘none’ як значення) і потім перевірте з dict.keys().
from operator import setitem
def distinct(l):
d = {}
map(setitem, (d,)*len(l), l, [])
return d.keys()
def distinct(l):
d = {}
map(setitem, (d,)*len(l), l, [])
return d.keys()
23. Цикл do-while
Оскільки Python не має конструкцій циклу do-while або do-until (поки що), можете використати наступний метод для отримання подібного результату:
while True:
do_something()
if condition():
break
do_something()
if condition():
break
24. Визначення платформи системи
Для виконання функцій конкретної платформи дуже корисно виявити платформу, на якій працює інтерпретатор Python. Ви можете використати 'sys.platform', щоб дізнатися поточну платформу.
Приклад:
Приклад:
На Ubuntu Linux
>>> import sys
>>> sys.platform
‘linux2’
>>> sys.platform
‘linux2’
На Mac OS X Snow Leopard
>>> import sys
>>> sys.platform
‘darwin’
>>> sys.platform
‘darwin’
25. Відключення і включення «збору сміття»
Іноді ви можете включити або відключити «збирач сміття» під час виконання. Ви можете використовувати модуль 'gc', щоб включити або відключити «збір сміття».
Приклад:
Приклад:
>>> import gc
>>> gc.enable <вбудована функція дозволена>
>>> gc.disable <вбудована функція заборонена>
>>> gc.enable <вбудована функція дозволена>
>>> gc.disable <вбудована функція заборонена>
26. Використання модулів на C для кращої продуктивності
Багато модулів Python поставляються з аналогами модулів C. За допомогою цих модулів C можна отримати значний приріст продуктивності в складних додатках.
Приклад:
Приклад:
cPickle instead of Pickle, cStringIO
замість StringIO.
замість StringIO.
27. Обчислення максимуму, мінімуму і суми з будь-якого списку або ітерактивно
Можете використати наступні вбудовані функції:
max: Повертає найбільший елемент із списку.
min: Повертає найменший елемент із списку.
sum: Функція повертає суму всіх елементів списку. Можна використати необов'язковий другий аргумент: значення, з якого має починатися додавання (за замовчуванням 0).
min: Повертає найменший елемент із списку.
sum: Функція повертає суму всіх елементів списку. Можна використати необов'язковий другий аргумент: значення, з якого має починатися додавання (за замовчуванням 0).
28. Подання дробних чисел
Примірник дробних чисел може бути створений за допомогою наступної конструкції:
Fraction([numerator[,denominator]])
29. Виконання математичних операцій
Модуль ‘math’ надає безліч математичних функцій. Вони працюють для цілих чисел і чисел з плаваючою точкою, крім комплексних чисел. Для комплексних чисел використовується окремий модуль, який називається ‘cmath’.
Приклад:
Приклад:
math.acos(x): Повертає arccos від x.
math.cos(x): Повертає cos від x.
math.factorial(x) : Повертає x-факторіал.
math.cos(x): Повертає cos від x.
math.factorial(x) : Повертає x-факторіал.
30. Робота з масивами
Модуль ‘array’ забезпечує ефективний спосіб використання масивів в ваших програмах. Модуль ‘array’ ' визначається введенням наступного: array(typecode [, initializer])
Після того, як ви створили об'єкт масиву, скажімо, myarray, ви можете застосувати купу методів до нього. Ось кілька важливих з них:
Після того, як ви створили об'єкт масиву, скажімо, myarray, ви можете застосувати купу методів до нього. Ось кілька важливих з них:
myarray.count(x): Повертає кількість значень x в масиві.
myarray.extend(x): Визначає x як кінець масиву.
myarray.reverse(): Обертає порядок в масиві.
myarray.extend(x): Визначає x як кінець масиву.
myarray.reverse(): Обертає порядок в масиві.
31. Сортування складових списку
Модуль ‘bisect’ робить можливим дуже легко отримати списки в будь-якому порядку. Можете використати наступні функції для впорядковування списків:
bisect.insort(list, item [, low[, high]])
Вставка елемента в список в відсортованому порядку. Якщо елемент вже є в списку, новий запис вставляється праворуч від будь-якого з існуючих записів.
bisect.insort_left(list, item [, low[, high]])
Вставки елемента в список в відсортованому порядку. Якщо елемент вже є в списку, новий запис вставляється зліва від будь-яких існуючих записів.
32. Використання пошуку на основі регулярних виразів
Модуль ‘re’ робить дуже простим у використанні пошук на основі регулярних виразів. Можете використати функцію ‘re.search()’ на основі регулярних виразів. Перевірте наведені нижче приклади.
Приклад:
Приклад:
>>> import re
>>> s = “Adam is a bad boy”
>>> if re.search(“A”, s): print(“Match!”) # char literal
...
Match!
>>> if re.search(“[@A-Z]”, s): print (“Match!”) # char class
... # match either at-sign or capital letter
Match!
>>> if re.search(“\d”, s): print(“Match!”) # digits class
...
>>> s = “Adam is a bad boy”
>>> if re.search(“A”, s): print(“Match!”) # char literal
...
Match!
>>> if re.search(“[@A-Z]”, s): print (“Match!”) # char class
... # match either at-sign or capital letter
Match!
>>> if re.search(“\d”, s): print(“Match!”) # digits class
...
33. Робота з форматом стиснення bzip2 (.bz2)
Можете використати модуль ‘bz2’ для читання та запису даних за допомогою алгоритму стиснення bzip2.
bz2.compress() : Для стиснення bz2
bz2.decompress() : Для витягування bz2
bz2.decompress() : Для витягування bz2
Приклад:
# Файл: bz2-example.py
import bz2
MESSAGE = “Adam is a bad boy”
compressed_message = bz2.
compress(MESSAGE)
decompressed_message = bz2.
decompress(compressed_message)
print (“original:”, repr(MESSAGE))
print (“compressed message:”, repr(compressed_message))
print (“decompressed message:”, repr(decompressed_message))
import bz2
MESSAGE = “Adam is a bad boy”
compressed_message = bz2.
compress(MESSAGE)
decompressed_message = bz2.
decompress(compressed_message)
print (“original:”, repr(MESSAGE))
print (“compressed message:”, repr(compressed_message))
print (“decompressed message:”, repr(decompressed_message))
Вихід:
python bz2- example.py
original: ‘Adam is a bad boy’
compressed message: ‘BZh91AY&SY\xc4\x0fG\x98\x00\x00\x02\x15\x80@\x00\x00\x084%\x8a \x00”\x00\x0c\x84\r\x03C\xa2\xb0\xd6s\xa5\xb3\x19\x00\xf8\xbb\x92)\xc2\x84\x86 z<\xc0’
decompressed message: ‘Adam is a bad boy’
original: ‘Adam is a bad boy’
compressed message: ‘BZh91AY&SY\xc4\x0fG\x98\x00\x00\x02\x15\x80@\x00\x00\x084%\x8a \x00”\x00\x0c\x84\r\x03C\xa2\xb0\xd6s\xa5\xb3\x19\x00\xf8\xbb\x92)\xc2\x84\x86 z<\xc0’
decompressed message: ‘Adam is a bad boy’
34. Використання бази даних SQLite з Python
SQLite швидко стає дуже популярною вбудованою базою даних через свою нульову необхідність конфігурації і чудові рівні продуктивності. Можете використати модуль 'sqlite3', щоб працювати з базами даних SQLite.
Приклад:
Приклад:
>>> import sqlite3
>>> connection = sqlite.connect(‘test.db’)
>>> curs = connection.cursor()
>>> curs.execute(‘’’create table item
... (id integer primary key, itemno text unique, ... scancode text, descr text, price real)’’’)
<sqlite3.Cursor object at 0x1004a2b30>
>>> connection = sqlite.connect(‘test.db’)
>>> curs = connection.cursor()
>>> curs.execute(‘’’create table item
... (id integer primary key, itemno text unique, ... scancode text, descr text, price real)’’’)
<sqlite3.Cursor object at 0x1004a2b30>
35. Робота з zip-файлами
Можете використати модуль ‘zipfile’ для роботи з zip файлами.
zipfile.ZipFile(filename [, mode [, compression [,allowZip64]]])
Відкрийте свій zip-файл, де файл може бути вказаний з шляхом до файлу (рядок) або файло-подібний об'єкт.
zipfile.close()¶
Закрийте файл архіву. Ви повинні викликати ‘close()’ перед виходом зі своєї програми або записи не будуть збережені.
zipfile.extract(member[, path[, pwd]])
Витягування елемента з архіву в поточний робочий каталог; ‘member’ має бути з повним ім'ям (або об'єкт zipinfo). Інформаційний файл витягується якомога точніше. ‘path’ вказує інший каталог для вилучення архіву. ‘member’ може бути ім'ям файлу або об'єктом zipinfo. ‘pwd’ є паролем, який використовується для зашифрованих файлів.
36. Використання спеціальних символів в UNIX-стилі для пошуку за іменами файлів
Можете використати модуль ‘glob’, щоб знайти всі шляхи до файлу, які збігаються з шаблоном відповідно до правил, що використовуються оболонкою UNIX. *,? і діапазони символів, вказані за допомогою [ ], будуть їм відповідати.
Приклад:
Приклад:
>>> import glob
>>> glob.glob(‘./[0-9].*’)
[‘./1.gif’, ‘./2.txt’]
>>> glob.glob(‘*.gif’)
[‘1.gif’, ‘card.gif’]
>>> glob.glob(‘?.gif’)
[‘1.gif’]
>>> glob.glob(‘./[0-9].*’)
[‘./1.gif’, ‘./2.txt’]
>>> glob.glob(‘*.gif’)
[‘1.gif’, ‘card.gif’]
>>> glob.glob(‘?.gif’)
[‘1.gif’]
37. Виконання основних перацій з файлами (копіювання, видалення і перейменування)
Можете використати модуль 'shutil' для виконання основних операцій з файлами на високому рівні. Цей модуль працює зі звичайними файлами, але не буде працювати з такими спеціальними файлами, як pipes, блокові пристрої, і т.д.
shutil.copy(src,dst)
Копіювати файл src в файл або каталог dst.
shutil.copymode(src,dst)
Копіювати файл дозволів від src для dst.
shutil.move(src,dst)
Перемістити файл або каталог в dst.
shutil.copytree(src, dst, symlinks [,ignore]])
Рекурсивно скопіювати весь каталог в src.
shutil.rmtree(path [, ignore_errors [, onerror]])
Видалити весь каталог.
38. Виконання UNIX-команд із Python
Можете використати модуль команд для виконання команд UNIX. Це неможливо в Python 3 – замість цього вам треба використати модуль ‘subprocess’.
Приклад:
Приклад:
>>> import commands
>>> commands.getoutput(‘ls’)
‘bz2-example.py\ntest.py’
>>> commands.getoutput(‘ls’)
‘bz2-example.py\ntest.py’
39. Читання змінної оточення
Можете використати модуль ‘os’, щоб зібрати інформацію про операційну систему для конкретної системи:
Приклад:
Приклад:
>>> import os
>>> os.path <module ‘posixpath’ from ‘/usr/lib/python2.6/posixpath.pyc’
>>>> os.environ {‘LANG’: ‘en_
IN’, ‘TERM’: ‘xterm-color’, ‘SHELL’:
‘/bin/bash’, ‘LESSCLOSE’:
‘/usr/bin/lesspipe %s %s’,
‘XDG_SESSION_COOKIE’:
‘925c4644597c791c704656354adf56d6-
1257673132.347986-1177792325’,
‘SHLVL’: ‘1’, ‘SSH_TTY’: ‘/dev/
pts/2’, ‘PWD’: ‘/home/kunal’,
‘LESSOPEN’: ‘| /usr/bin
lesspipe
......}
>>> os.name
‘posix’
>>> os.
>>> os.path <module ‘posixpath’ from ‘/usr/lib/python2.6/posixpath.pyc’
>>>> os.environ {‘LANG’: ‘en_
IN’, ‘TERM’: ‘xterm-color’, ‘SHELL’:
‘/bin/bash’, ‘LESSCLOSE’:
‘/usr/bin/lesspipe %s %s’,
‘XDG_SESSION_COOKIE’:
‘925c4644597c791c704656354adf56d6-
1257673132.347986-1177792325’,
‘SHLVL’: ‘1’, ‘SSH_TTY’: ‘/dev/
pts/2’, ‘PWD’: ‘/home/kunal’,
‘LESSOPEN’: ‘| /usr/bin
lesspipe
......}
>>> os.name
‘posix’
>>> os.
40. Відправлення email
Можете використати модуль ‘smtplib’ для відсилання email за допомогою SMTP (Simple Mail Transfer Protocol) інтерфейсу клієнта.
smtplib.SMTP([host [, port]])
Приклад (відправлення email з використанням сервера Google Mail SMTP):
import smtplib
# Використовуйте власну поштову адресу
fromaddr = ‘donaldo@gmail.com’
toaddrs = ‘toemail@gmail.com’
msg = ‘I am a Python geek. Here is the proof.!’
# Повноваження
# Використовуйте власні повноваження від Google Mail, коли запускаєте програму
username =‘donaldo@gmail.com’
password = ‘xxxxxxxx’
# Актуальний сервер для відсилання пошти = smtplib.SMTP(‘smtp.gmail.com:587’)
# Google Mail використовує захищене SMTP-з’єднання
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
# Використовуйте власну поштову адресу
fromaddr = ‘donaldo@gmail.com’
toaddrs = ‘toemail@gmail.com’
msg = ‘I am a Python geek. Here is the proof.!’
# Повноваження
# Використовуйте власні повноваження від Google Mail, коли запускаєте програму
username =‘donaldo@gmail.com’
password = ‘xxxxxxxx’
# Актуальний сервер для відсилання пошти = smtplib.SMTP(‘smtp.gmail.com:587’)
# Google Mail використовує захищене SMTP-з’єднання
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
41. Доступ до сервера FTP
‘ftplib’ є повноцінним клієнтським модулем FTP для Python. Для того, щоб встановити з'єднання з FTP, можете використати наступну функцію: ftplib.FTP([host [, user [, passwd [, acct [, timeout]]]]])
Приклад:
Приклад:
host = “ftp.redhat.com”
username = “anonymous”
password = “donaldo@gmail.com”
import ftplib
import urllib2
ftp_serv = ftplib.FTP(host,username,password)
# Завантаження файла
u = urllib2.urlopen (“ftp://ftp.redhat.com/pub/redhat/linux/README”)
# Виведення контенту файла
print (u.read())
username = “anonymous”
password = “donaldo@gmail.com”
import ftplib
import urllib2
ftp_serv = ftplib.FTP(host,username,password)
# Завантаження файла
u = urllib2.urlopen (“ftp://ftp.redhat.com/pub/redhat/linux/README”)
# Виведення контенту файла
print (u.read())
Вихід:
python
ftpclient.py
ftpclient.py
42. Запуск веб-сторінки з веб-браузером за замовчуванням
Модуль ‘webbrowser’ забезпечує зручний спосіб для запуску веб-сторінок за допомогою веб-браузер за замовчуванням.
Приклад (запуск google.co.uk за допомогою веб-браузера системи за замовчуванням):
Приклад (запуск google.co.uk за допомогою веб-браузера системи за замовчуванням):
>>> import webbrowser
>>> webbrowser.open(‘http://google.co.uk’)
True
>>> webbrowser.open(‘http://google.co.uk’)
True
43. Створення хешів для захисту
Модуль ‘hashlib’ підтримує алгоритми хешів для захисту, включаючи SHA1, SHA224, SHA256, SHA384, SHA512 і MD5.
Приклад (створення hex-дайджетів для заданого тексту):
Приклад (створення hex-дайджетів для заданого тексту):
>>> import hashlib
# sha1 Digest
>>> hashlib.sha1(“MI6 Classified Information 007”).hexdigest()
‘e224b1543f229cc0cb935a1eb959318ba1b20c85’
# sha224 Digest
>>> hashlib.sha224(“MI6 Classified Information 007”).hexdigest()
‘3d01e2f741000b0224084482f905e9b7b977a59b480990ea8355e2c0’
# sha256 Digest
>>> hashlib.sha256(“MI6 ClassifiedInformation 007”).hexdigest()
‘2fdde5733f5d47b67 2fcb39725991c89b2550707cbf4c6403e fdb33b1c19825e’
# sha384 Digest
>>> hashlib.sha384(“MI6 ClassifiedInformation 007”).hexdigest()
‘5c4914160f03dfbd19e14d3ec1e74bd8b99dc192edc138aaf7682800982488daaf540be9e0e50fc3d3a65c8b6353572d’
# sha512 Digest
>>> hashlib.sha512(“MI6 ClassifiedInformation 007”).hexdigest()
‘a704ac3dbef6e8234578482a31d5ad29d252c822d1f4973f49b850222edcc0a29bb890778aea807a0a48ee4ff8bb18566140667fbaf73a1dc1ff192febc713d2’
# MD5 Digest
>>> hashlib.md5(“MI6 ClassifiedInformation 007”).hexdigest()
‘8e2f1c52ac146f1a999a670c826f7126’
# sha1 Digest
>>> hashlib.sha1(“MI6 Classified Information 007”).hexdigest()
‘e224b1543f229cc0cb935a1eb959318ba1b20c85’
# sha224 Digest
>>> hashlib.sha224(“MI6 Classified Information 007”).hexdigest()
‘3d01e2f741000b0224084482f905e9b7b977a59b480990ea8355e2c0’
# sha256 Digest
>>> hashlib.sha256(“MI6 ClassifiedInformation 007”).hexdigest()
‘2fdde5733f5d47b67 2fcb39725991c89b2550707cbf4c6403e fdb33b1c19825e’
# sha384 Digest
>>> hashlib.sha384(“MI6 ClassifiedInformation 007”).hexdigest()
‘5c4914160f03dfbd19e14d3ec1e74bd8b99dc192edc138aaf7682800982488daaf540be9e0e50fc3d3a65c8b6353572d’
# sha512 Digest
>>> hashlib.sha512(“MI6 ClassifiedInformation 007”).hexdigest()
‘a704ac3dbef6e8234578482a31d5ad29d252c822d1f4973f49b850222edcc0a29bb890778aea807a0a48ee4ff8bb18566140667fbaf73a1dc1ff192febc713d2’
# MD5 Digest
>>> hashlib.md5(“MI6 ClassifiedInformation 007”).hexdigest()
‘8e2f1c52ac146f1a999a670c826f7126’
44. Генерування випадкових чисел
Можна використати модуль ‘random’ для генерування широкого спектру випадкових чисел. Найбільш часто використовується ‘random.seed([x])’. Він ініціалізує основний генератор випадкових чисел. Якщо х опущений або None, використовується поточний системний час; поточний системний час також використовується для ініціалізації генератора, коли модуль імпортується вперше.
45. Робота з файлами CSV (значення, розділені комами)
CSV файли дуже популярні для обміну даними в вебі. Використовуючи модуль ‘csv’, можете читати і записувати файли CSV.
Приклад:
Приклад:
import csv
# запис збережених даних у форматі розділених комою значень
writer = csv.writer(open(‘stocks.csv’, ‘wb’, buffering=0))
writer.writerows([(‘GOOG’, ‘Google, Inc.’, 505.24, 0.47,0.09),(‘YHOO’, ‘Yahoo! Inc.’, 27.38, 0.33,1.22),(‘CNET’, ‘CNET Networks, Inc.’, 8.62,-0.13, -1.49)])
# читання збережених даних, виведення статусного повідомлення
stocks = csv.reader(open(‘stocks.csv’, ‘rb’))
status_labels = {-1: ‘down’, 0:‘unchanged’, 1: ‘up’}
for ticker, name, price, change, pctin stocks:
status = status_
labels[cmp(float(change), 0.0)]
print ‘%s is %s (%s%%)’ % (name, status, pct)
# запис збережених даних у форматі розділених комою значень
writer = csv.writer(open(‘stocks.csv’, ‘wb’, buffering=0))
writer.writerows([(‘GOOG’, ‘Google, Inc.’, 505.24, 0.47,0.09),(‘YHOO’, ‘Yahoo! Inc.’, 27.38, 0.33,1.22),(‘CNET’, ‘CNET Networks, Inc.’, 8.62,-0.13, -1.49)])
# читання збережених даних, виведення статусного повідомлення
stocks = csv.reader(open(‘stocks.csv’, ‘rb’))
status_labels = {-1: ‘down’, 0:‘unchanged’, 1: ‘up’}
for ticker, name, price, change, pctin stocks:
status = status_
labels[cmp(float(change), 0.0)]
print ‘%s is %s (%s%%)’ % (name, status, pct)
Модулі сторонніх розробників
46. Встановлення модулів сторонніх розробників за допомогою setuptools
‘setuptools’ є пакетом Python, який дозволяє завантажувати, будувати, встановлювати, оновлювати і деінсталювати пакети дуже легко.
Для використання ‘setuptools’ його треба інсталювати з вашого менеджера пакетного дистрибутива. Після інсталяції можете використати команду ‘easy_install’ для налаштування.
Приклад (встановлення simplejson за допомогою setuptools):
Для використання ‘setuptools’ його треба інсталювати з вашого менеджера пакетного дистрибутива. Після інсталяції можете використати команду ‘easy_install’ для налаштування.
Приклад (встановлення simplejson за допомогою setuptools):
$ sudo easy_install simplejson
Searching for simplejson
Reading http://pypi.python.org/simple/simplejson/
Reading http://undefined.org/python /#simplejson
Best match: simplejson 2.0.9
Downloading http://pypi.python.org/packages/source/s/simplejson/simplejson-2.0.9.tar.gz #md5=af5e67a39ca3408563411d357e6d5e47
Processing simplejson-2.0.9.tar.gz
Running simplejson-2.0.9/setup.py-q bdist_egg --dist-dir /tmp/easy_
install-FiyfNL/simplejson-2.0.9/eggdist-tmp-3YwsGV
Adding simplejson 2.0.9 to easyinstall.pth file
Installed /usr/local/lib/python2.6/dist-packages/simplejson-2.0.9-py2.6-linux-i686.egg
Searching for simplejson
Reading http://pypi.python.org/simple/simplejson/
Reading http://undefined.org/python /#simplejson
Best match: simplejson 2.0.9
Downloading http://pypi.python.org/packages/source/s/simplejson/simplejson-2.0.9.tar.gz #md5=af5e67a39ca3408563411d357e6d5e47
Processing simplejson-2.0.9.tar.gz
Running simplejson-2.0.9/setup.py-q bdist_egg --dist-dir /tmp/easy_
install-FiyfNL/simplejson-2.0.9/eggdist-tmp-3YwsGV
Adding simplejson 2.0.9 to easyinstall.pth file
Installed /usr/local/lib/python2.6/dist-packages/simplejson-2.0.9-py2.6-linux-i686.egg
47. Доступ до системних логів
Можете використати модуль ‘syslog’ для запису системних логів. ‘syslog’ працює як інтерфейс до обладнання бібліотеки UNIX syslog.
Приклад:
Приклад:
import syslog
syslog.syslog(‘mygeekapp: started logging’)
for a in [‘a’, ‘b’, ‘c’]:
b = ‘mygeekapp: I found letter ‘+a
syslog.syslog(b)
syslog.syslog(‘mygeekapp: the script goes to sleep now, bye,bye!’)
syslog.syslog(‘mygeekapp: started logging’)
for a in [‘a’, ‘b’, ‘c’]:
b = ‘mygeekapp: I found letter ‘+a
syslog.syslog(b)
syslog.syslog(‘mygeekapp: the script goes to sleep now, bye,bye!’)
Вихід:
$ python mylog.py
$ tail -f /var/log/messages
Nov 8 17:14:34 ubuntu -- MARK --
Nov 8 17:22:34 ubuntu python:
mygeekapp: started logging
Nov 8 17:22:34 ubuntu python:
mygeekapp: I found letter a
Nov 8 17:22:34 ubuntu python:
mygeekapp: I found letter b
Nov 8 17:22:34 ubuntu python:
mygeekapp: I found letter c
Nov 8 17:22:34 ubuntu python:
mygeekapp: the script goes to sleep
now, bye,bye!
$ tail -f /var/log/messages
Nov 8 17:14:34 ubuntu -- MARK --
Nov 8 17:22:34 ubuntu python:
mygeekapp: started logging
Nov 8 17:22:34 ubuntu python:
mygeekapp: I found letter a
Nov 8 17:22:34 ubuntu python:
mygeekapp: I found letter b
Nov 8 17:22:34 ubuntu python:
mygeekapp: I found letter c
Nov 8 17:22:34 ubuntu python:
mygeekapp: the script goes to sleep
now, bye,bye!
48. Генерування документів PDF
‘ReportLab’ є дуже популярним модулем для генеруванняr PDF з Python.
Виконайте наступні кроки для встановлення ReportLab
Виконайте наступні кроки для встановлення ReportLab
$ wget http://www.reportlab.org/ftp/ReportLab_2_3.tar.gz
$ tar xvfz ReportLab_2_3.tar.gz
$ cd ReportLab_2_3
$ sudo python setup.py install
$ tar xvfz ReportLab_2_3.tar.gz
$ cd ReportLab_2_3
$ sudo python setup.py install
Якщо встановлення завершилось успішно, то повинні побачити подібне повідомлення:
############SUMMARY INFO###########
###################################
#Attempting install of _rl_accel, sgmlop& pyHnj
#extensions from ‘/home/kunal/python/ReportLab_2_3/src/rl_addons/rl_accel’
###################################
#Attempting install of _renderPM
#extensions from ‘/home/kunal/python/ReportLab_2_3/src/rl_addons/renderPM’
# installing with freetype version 21
###################################
###################################
#Attempting install of _rl_accel, sgmlop& pyHnj
#extensions from ‘/home/kunal/python/ReportLab_2_3/src/rl_addons/rl_accel’
###################################
#Attempting install of _renderPM
#extensions from ‘/home/kunal/python/ReportLab_2_3/src/rl_addons/renderPM’
# installing with freetype version 21
###################################
Приклад:
>>> from reportlab.pdfgen.canvas import Canvas
# Select the canvas of letter page size
>>> from reportlab.lib.pagesizes import letter
>>> pdf = Canvas(“bond.pdf”, pagesize = letter)
# import units
>>> from reportlab.lib.units import cm, mm, inch, pica
>>> pdf.setFont(“Courier”, 60)
>>> pdf.setFillColorRGB(1, 0, 0)
>>> pdf.drawCentredString(letter[0] / 2, inch * 6, “MI6 CLASSIFIED”)
>>> pdf.setFont(“Courier”, 40)
>>> pdf.drawCentredString(letter[0] / 2, inch * 5, “For 007’s Eyes Only”)
# Close the drawing for current page
>>> pdf.showPage()
# Save the pdf page
>>> pdf.save()
# Select the canvas of letter page size
>>> from reportlab.lib.pagesizes import letter
>>> pdf = Canvas(“bond.pdf”, pagesize = letter)
# import units
>>> from reportlab.lib.units import cm, mm, inch, pica
>>> pdf.setFont(“Courier”, 60)
>>> pdf.setFillColorRGB(1, 0, 0)
>>> pdf.drawCentredString(letter[0] / 2, inch * 6, “MI6 CLASSIFIED”)
>>> pdf.setFont(“Courier”, 40)
>>> pdf.drawCentredString(letter[0] / 2, inch * 5, “For 007’s Eyes Only”)
# Close the drawing for current page
>>> pdf.showPage()
# Save the pdf page
>>> pdf.save()
Вихід:
@image:pdf.png
@title: PDF Output
@title: PDF Output
49. Використання API Twitter
Можете приєднатися доTwitter за допомогою модуля ‘Python- Twitter’.
Виконайте наступні кроки для встановлення Python-Twitter:
Виконайте наступні кроки для встановлення Python-Twitter:
$ wget http://python-twitter.googlecode.com/files/python-twitter-0.6.tar.gz
$ tar xvfz python-twitter*
$ cd python-twitter*
$ sudo python setup.py install
$ tar xvfz python-twitter*
$ cd python-twitter*
$ sudo python setup.py install
Приклад (витягування списку послідовників):
>>> import twitter
# Тут використовуйте свій власний обліковий запис twitter
>>> mytwi = twitter.Api(username=’donaldo’,password=’xxxxxx’)
>>> friends = mytwi.GetFriends()
>>> print [u.name for u in friends] [u’Matt Legend Gemmell’, u’jono wells’, u’The MDN Big Blog’, u’Manish Mandal’, u’iH8sn0w’, u’IndianVideoGamer.com’, u’FakeAaron Hillegass’, u’ChaosCode’, u’nileshp’, u’Frank Jennings’,..’]
# Тут використовуйте свій власний обліковий запис twitter
>>> mytwi = twitter.Api(username=’donaldo’,password=’xxxxxx’)
>>> friends = mytwi.GetFriends()
>>> print [u.name for u in friends] [u’Matt Legend Gemmell’, u’jono wells’, u’The MDN Big Blog’, u’Manish Mandal’, u’iH8sn0w’, u’IndianVideoGamer.com’, u’FakeAaron Hillegass’, u’ChaosCode’, u’nileshp’, u’Frank Jennings’,..’]
50. Doing Yahoo! News search
Можете використати Yahoo! search SDK для доступу до Yahoo! search APIs з Python.
Виконайте наступні кроки для встановлення:
Виконайте наступні кроки для встановлення:
$wget http://developer.yahoo.com/download/files/yws-2.12.zip
$ unzip yws*
$ cd yws*/Python/pYsearch*/
$ sudo python setup.py install
$ unzip yws*
$ cd yws*/Python/pYsearch*/
$ sudo python setup.py install
Приклад:
# Імпорт нового пошукового API
>>> from yahoo.search.news import NewsSearch
>>> srch = NewsSearch(‘YahooDemo’, query=’London’)
# Витягування результатів
>>> info = srch.parse_results()
>>> info.total_results_available 41640
>>> info.total_results_returned 10
>>> for result in info.results: ... print “’%s’, from %s” % (result[‘Title’], result[‘NewsSource’])...
‘Afghan Handover to Be Planned at LondonConference, Brown Says’, from Bloomberg.................
>>> from yahoo.search.news import NewsSearch
>>> srch = NewsSearch(‘YahooDemo’, query=’London’)
# Витягування результатів
>>> info = srch.parse_results()
>>> info.total_results_available 41640
>>> info.total_results_returned 10
>>> for result in info.results: ... print “’%s’, from %s” % (result[‘Title’], result[‘NewsSource’])...
‘Afghan Handover to Be Planned at LondonConference, Brown Says’, from Bloomberg.................
Немає коментарів:
Дописати коментар