0% found this document useful (0 votes)
107 views92 pages

Python Rat La Co Ban - Vo Duy Tuan 2

This document provides an overview of the Python programming language by summarizing key Python concepts like variables, data types, conditional statements, loops, functions, modules, classes and object-oriented programming, file handling and the os module. Code examples are included to demonstrate the core syntax and usage of many common Python constructs.

Uploaded by

ThangPhan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
107 views92 pages

Python Rat La Co Ban - Vo Duy Tuan 2

This document provides an overview of the Python programming language by summarizing key Python concepts like variables, data types, conditional statements, loops, functions, modules, classes and object-oriented programming, file handling and the os module. Code examples are included to demonstrate the core syntax and usage of many common Python constructs.

Uploaded by

ThangPhan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 92

$ python --version

helloworld.py

print 'Hello world'


print

$ python helloworld.py

Hello world
a = 1

a = 1
a = 'Hello World'
a = [1, 2, 3]
a = [1.2, 'Hello', 'W', 2]

+
-

True False

not

and

or

< <=
> >= ==
!=
x = 2

1 < x < 3 # True


10 < x < 20 # False
3 > x <= 2 # True
2 == x < 4 # True

in
not in

'good' in 'this is a greate example' # F


alse
'good' not in 'this is a greate example' # True

{ }
if condition1 :
indentedStatementBlockForTrueCondition1
elif condition2 :
indentedStatementBlockForFirstTrueCondition2
elif condition3 :
indentedStatementBlockForFirstTrueCondition3
elif condition4 :
indentedStatementBlockForFirstTrueCondition4
else:
indentedStatementBlockForEachConditionFalse

switch case

for iterating_var in sequence:


statements(s)
for letter in 'Python': # First Example
print 'Current Letter :', letter

fruits = ['banana', 'apple', 'mango']


for fruit in fruits: # Second Example
print 'Current fruit :', fruit

print "Good bye!"

Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!
while expression:
statement(s)

count = 0
while (count < 9):
print 'The count is:', count
count = count + 1

print "Good bye!"


The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!

def functionname(param, param2,..):


statements(s)

None
def sum(a, b):
return (a+b)

sum(1, 2)
(tr v gi tr l 3)

def plus(c, d = 10):


return (c+d)

plus(2)
(kt qu tr v l 12)
sum(a,b) b a

sum(b = 1, a = 10)

"
'

str1 = "Hello"
str2 = 'world'

str1[0] str1[1]
paragraph = """This is line 1
This is line 2
This is line 3"""

str = str1 + " " + str2

[start:end] start
0 end
str = 'Hello world'

print str[0:4]
(Hin th "Hell")

print str[:4]
(Hin th "Hell")

print str[-3:]
(Hin th "rld")

print str[6:-3]
(Hin th "wo")

len(...)

count = len("Hello world")


(count c gi tr 11)
replace(search, replace[, max])

str = 'Hello world'


newstr = str.replace('Hello', 'Bye')
print newstr
(S hin th chui "Bye world" trn mn hnh)

find(str, beg=0
end=len(string)) 0
-1

str = 'Hello world'


print str.find('world')
(hin th 6)

print str.find('Bye');
(hin th -1)

find()
rfind()

split(str="", num=string.count(str))

str = 'Hello world'


print str.split(' ')
(Tr v mt mng c 2 phn t l 2 chui "Hello" v
"world")

splitlines()
strip([chars])

lstrip([chars])

rstrip([chars])

isnumeric()

lower()

upper()

[..]
numbers = [1, 2, 3, 4, 5]
names = ['Marry', 'Peter']

print numbers[0]
(Hin th 1)

print numbers[-3]
(Hin th 3)

print names[1]
(Hin th 'Peter')

len(array)
if index < len(array):
array[index]
else:
# handle this
try:
array[index]
except IndexError:
# handle this

in not in

mylist = ['a', 'b', 'c']

print 'a' in mylist


(Hin th True)

print 'b' not in mylist


(Hin th False)

[start:end] start
0 end

numbers = ['a', 'b', 'c', 'd']

print numbers[:2]
(Hin th ['a', 'b'])

print numbers[-2:]
(Hin th ['c', 'd'])

del

numbers = [1, 2, 3, 4, 5]
del numbers[0]
print numbers
(Hin th [2, 3, 4, 5])

[start:end]
numbers = [1, 2, 3, 4, 5, 6, 7]
del numbers[2:4]
print numbers
(Hin th [1, 2, 5, 6, 7])

a = [1, 2]
b = [1, 3]

print a + b
(Hin th [1, 2, 1, 3])

list.append(newvalue)
newvalue list
numbers = [1, 2, 3]
numbers.append(4)
print numbers
(Hin th [1, 2, 3, 4]

list.pop()

numbers = [1, 2, 3]
mynumber = numbers.pop()
print mynumber
(Hin th 3)

print numbers
(Hin th [1, 2])
list.index(obj)

aList = [123, 'xyz', 'zara', 'abc'];

print "Index for xyz : ", aList.index('xyz')


print "Index for zara : ", aList.index('zara')

Index for xyz : 1


Index for zara : 2

list.reverse()
list
numbers = [1, 2, 3, 4]
numbers.reverse()
print numbers
(Hin th [4, 3, 2, 1])

list.sort([func])
func

list

aList = [123, 'xyz', 'zara', 'abc', 'xyz']


aList.sort()
print "List : ", aList
(Hin th List : [123, 'abc', 'xyz', 'xyz', 'zara'
])

func()
0 -1 1
(...)

append() pop()

mytuple = ('x', 'y', 'z')


print mytuple
(Hin th ('x', 'y', 'z'))

{...}
point = {'x': 1, 'y': 2}

point = {'x': 3, 'y': 6, 'z' : 9}


print point[x]
(Hin th 3)

dict[key] = value

user = {'name': 'Jone', 'age': 30}


user['country'] = 'Vietnam'
print user
(Hin th {'country': 'Vietnam', 'age': 30, 'name':
'Jone'})

dict.clear()
dict.copy()

dict.fromkeys(seq[, value])

value

dict.has_key(key)

dict.keys()

dict.values()
.py

.py

.dll

.pyd .so .sl


import modulename
import math
math.__file__
(V d tr v '/usr/lib/python2.5/lib-dynload/math.
so')

import random
random.__file__
(V d tr v '/usr/lib/python2.5/random.pyc')

dir(modulename)
dir(math)
['__doc__', '__file__', '__name__', '__package__',
'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2',
'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degree
s', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'fa
ctorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma'
, 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'lo
g', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians
', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

dir()

mymath.py
def cong(a, b):
return a + b

def tru(a, b):


return a - b

def nhan(a, b):


return a * b

myexample.py
mymath.py

import mymath

num1 = 1
num2 = 2

print 'Tong hai so la: ', mymath.cong(num1, num2)


$ python myexample.py

Tong hai so la: 3

.py
__init__.py

|-- mypack
| |-- __init__.py
| |-- mymodule1.py
| |-- mymodule2.py
|

mymodule1
import mypack.mymodule1

import mypack.mymodule1 as mymodule1

import mypack.mymodule1 as mod

__init__.py
__init__.py

__init__.py

import mypack.mysubpack.mysubsubpack.module
class myclass([parentclass]):
assignments
def __init__(self):
statements
def method():
statements
def method2():
statements

class animal():
name = ''
name = ''
age = 0
def __init__(self, name = '', age = 0):
self.name = name
self.age = age
def show(self):
print 'My name is ', self.name
def run(self):
print 'Animal is running...'
def go(self):
print 'Animal is going...'

class dog(animal):
def run(self):
print 'Dog is running...'

myanimal = animal()
myanimal.show()
myanimal.run()
myanimal.go()

mydog = dog('Lucy')
mydog.show()
mydog.run()
mydog.go()
My Name is
Animal is running...
Animal is going...
My Name is Lucy
Dog is running...
Animal is going...

animal dog dog

animal

animal

name age

__init__(self)

show() run() go()

self
run() dog override

run() animal
fh = open(filepath, mode)

filepath mode

a
r+

w+

a+

b rb wb ab rb+ wb+ ab+

f1 = open('test.txt', 'r')
f2 = open('access_log', 'a+'

open()

closed

mode

name

softspace
print

read([count])

f1 = open('test.txt', 'r')
data = f1.read();

read()

f2 = open('log.txt', 'r')
buffdata = f2.read(1024)

write()
f2 = open('access_log', 'a+')
f2.write('Attack detected')

close()

f1.close()
f2.close()

os.rename(old, new)

import os
os.rename('test.txt', 'test_new.txt')

os.remove(file)
import os
os.remove('test.txt')

os.mkdir(dir)

import os
os.mkdir('test')

os.rmdir(dir)

import os
os.rmdir('test')
os.listdir(dir)
dir

import os
allfiles = os.listdir('/root/downloads')
print allfiles

os

os

os.chdir(path)

os.getcwd()

os.chmod(path, mode)

os.chown(path, uid, gid)

os.makedirs(path[, mode])
os.removedirs(path)

os.path

os.path

os.path.exists(path)

os.path.getsize(path)

os.path.isfile(path)

os.path.isdir(path)

os.path.dirname(path)

os.path.getatime(path)
os.path.getmtime(path)

os.path.getctime(path)
from PIL import Image

from PIL import Image


im = Image.open("photo.jpg")
im

Image
save(path, type)

...
im.save('photo_new.jpg', 'JPEG')

thumbnail

from PIL import Image


im = Image.open('photo.jpg')
im.thumbnail((100, 100))
im.save('photo_thumbnail.jpg', 'JPEG')

thumbnail
urllib2
json
import urllib2
import json

response = urllib2.urlopen('https://api.github.com/
users/voduytuan/repos')

data = json.load(response)

print data
import json

mystring = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
data = json.loads(mystring)
print data
(Hin th: {u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd
': 4})

import json

mydata = {
'name': 'John',
'age': 10
}
jsonstring = json.dumps(mydata)
print jsonstring
(hin th: {"age": 10, "name": "John"})
pip

$ sudo pip install beautifulsoup4

lxml

xml
lxml
pip

sudo pip install lxml

from bs4 import BeautifulSoup as Soup

note = '''
<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
<food>
<name>Belgian Waffles</name>
<price>$5.95</price>
<description>Two of our famous Belgian Waff
les with plenty of real maple syrup</description>
<calories>650</calories>
</food>
<food>
<name>Strawberry Belgian Waffles</name>
<name>Strawberry Belgian Waffles</name>
<price>$7.95</price>
<description>Light Belgian waffles covered
with strawberries and whipped cream</description>
<calories>900</calories>
</food>
</breakfast_menu>
'''

soup = Soup(note, 'xml')

foods = soup.findAll('food')

for x in foods:
print x.find('name').string, ': ', x.price.stri
ng

Belgian Waffles : $5.95


Strawberry Belgian Waffles : $7.95

Soup
findAll()

find()

x.price.string

xml
html

...
soup = Soup(websitehtml, 'html')
MySQLdb

pip

$ sudo pip install MySQL-python


import MySQLdb

libmysqlclient.18.dylib

libmysqlclient.18.dylib /usr/lib/

$ sudo ln -s /usr/local/mysql/lib/libmysqlclient.18
.dylib /usr/lib/libmysqlclient.18.dylib
import MySQLdb

dbcon = MySQLdb.connect(host = 'localhost', user =


'myusername', passwd = 'mypassword', db = 'mydbname
')

try
import MySQLdb

db = None

try:
db = MySQLdb.connect(host = 'localhost', user =
'root', passwd = 'root', db = 'mysql')

except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0],e.args[1])
sys.exit(1)

if db:
cur = db.cursor()
cur.execute("SELECT VERSION()")
ver = cur.fetchone()
print "Database version : %s " % ver

charset utf8

latin

utf8
...
db = MySQLdb.connect(host = 'localhost', user = 'ro
ot', passwd = 'root', db = 'test', charset = 'utf8'
)

cursor

import MySQLdb

db = MySQLdb.connect(host = 'localhost', user = 'ro


ot', passwd = 'root', db = 'mysql');
cursor = db.cursor()
sql = 'SELECT * FROM user'
cursor.execute(sql)
myusers = cursor.fetchall()

myusers ((1, 'John'), (2, 'Doe'))

cursor
tuple
Dictionary

import MySQLdb

db = MySQLdb.connect(host = 'localhost', user = 'ro


ot', passwd = 'root', db = 'mysql')
cursor = db.cursor(MySQLdb.cursors.DictCursor)
...

cursor
exectute(sql) fetchone() fetchall()

fetchone()

None

fetchall()
fetchmany(size)

import MySQLdb

db = MySQLdb.connect(...)
db.close()

cursor
import MySQLdb

db = MySQLdb.connect(...)
cursor = db.cursor()
cursor.close()
db.close()

...
cur.execute("UPDATE Writers SET Name = %s WHERE Id
= %s", ("John", "4"))
...

%s
execute()
%s
pip

$ sudo pip install redis


import redis

r = redis.StrictRedis(host='localhost', port=6379,
db=0)

import redis

r = redis.StrictRedis(...)
r.set('foo', 'bar')
print r.get('foo')
(Hin th 'bar')

redis-py
import redis

r = redis.StrictRedis(...)
r.set('foo', 'bar')
pipe = r.pipeline()
pipe.set('a', 1)
pipe.set('b', 2)
pipe.set('c', 3)
pipe.get('foo')
pipe.execute()

execute()

[True, True, True, 'bar']


pylibmc

pip

$ sudo pip install pylibmc


import pylibmc

mc = pylibmc.Client(["127.0.0.1"], binary=True, beh


aviors={"tcp_nodelay": True, "ketama": True})

import pylibmc

mc = pylibmc.Client(...)
mc.set('foo', 'bar')
print mc.get('foo')
(Hin th 'bar')
pika

pip

$ sudo pip install pika


import pika

connection = pika.BlockingConnection(pika.Connectio
nParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')

channel.basic_publish(exchange='', routing_key='hel
lo', body='Hello World!')
print " [x] Sent 'Hello World!'"

connection.close()

hello

Hello World!
routing_key hello
hello

import pika

connection = pika.BlockingConnection(pika.Connectio
nParameters(host='localhost'))
channel = connection.channel()

channel.queue_declare(queue='hello')

print ' [*] Waiting for messages. To exit press CTR


L+C'

def callback(ch, method, properties, body):


print " [x] Received %r" % (body,)

channel.basic_consume(callback, queue='hello', no_a


ck=True)

channel.start_consuming()

connection
channel
basic_consume
hello callback()

pika
requests

pip

$ sudo pip install requests


import requests

r = requests.get('https://api.github.com/events')
r = requests.post("http://httpbin.org/post")
r = requests.put("http://httpbin.org/put")
r = requests.delete("http://httpbin.org/delete")
r = requests.head("http://httpbin.org/get")
r = requests.options("http://httpbin.org/get")

GET
params get()
import requests

payload = {'key1': 'value1', 'key2': 'value2'}


r = requests.get("http://httpbin.org/get", params =
payload)
print(r.url)
(Hin th: http://httpbin.org/get?key2=value2&key1=
value1)

data

import requests

payload = {'key1': 'value1', 'key2': 'value2'}


r = requests.post("http://httpbin.org/post", data =
payload)
files

import requests

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

Response

status_code

headers

cookies

text
requests
smtplib

sender

sender

pip

$ sudo pip install sender

sender
from sender import Mail, Message

mail = Mail(
"smtp.gmail.com",
port = 465,
username = "[email protected]",
password = "yourpassword",
use_tls = False,
use_ssl = True,
debug_level = False
)

msg = Message("msg subject")


msg.fromaddr = ("Vo Duy Tuan", "[email protected]")
msg.to = "[email protected]"
msg.body = "this is a msg plain text body"
msg.html = "<b>this is a msg text body</b>"
msg.reply_to = "[email protected]"
msg.charset = "utf-8"
msg.extra_headers = {}
msg.mail_options = []
msg.rcpt_options = []

# Send message
mail.send(msg)
from sender import Mail, Message, Attachment

mail = Main(...)
msg = Message(..)
...

# Open attached file and create Attachment object


with open("photo01.jpg") as f:
file01 = Attachment("photo01.jpg", "image/jpeg"
, f.read())

msg.attach(file01)

# Send message
mail.send(msg)

sender
server.py
import socket

s = socket.socket()
host = socket.gethostname()
port = 12345
s.bind((host, port))

s.listen(5)
while True:
c, addr = s.accept()
print 'Got connection from', addr
c.send('Thank you for connecting')
c.close()

Got connection
from Got connection from ('192.168.1.104', 60018)
Thank you for
connecting
client.py

import socket

s = socket.socket()
host = '127.0.0.1'
port = 12345

s.connect((host, port))
print s.recv(1024)
s.close

socket.gethostname()

You might also like