No comment
import math
math.sin(1)
datetime
е модул, който ви дава основна функционалност за дати
datetime.date(year, month, day)
- клас за датаdatetime.time(hour, minute, second, microsecond, tzinfo=None)
- клас за времеdatetime.datetime(…)
- клас за дата и времеdatetime.timedelta
- разлика м/у datetime.datetime
now = datetime.datetime.now()
future = now + datetime.timedelta(minutes=45)
past = now - datetime.timedelta(minutes=45)
special = datetime.datetime(2009, 5, 11, 19, 0)
some_date = datetime.datetime.strptime(
'11.05.2009 17:00', '%d.%m.%Y %H:%M')
hour = datetime.timedelta(minutes=30) * 2
print(now, future, past, special, some_date, sep='\n')
print(hour)
print(now.strftime('%d.%m.%Y %H:%M'))
os
- функционалност от операционната система
os.path
- функционалност за работа с пътища във файловата система
os.system(command)
- изпълнява командатаos.chdir(path)
- сменя я ; os.getcwd()
- дава яos.listdir(path)
- дава съдържанието на директориятаos.makedirs(path)
- създава директория и родителиos.remove(path)
- трие файл; os.rmdir(path)
- трие празна директорияos.stat(path)
- данни за файлаos.walk(path)
- for root, dirs, files in os.walk('/tmp/'): pass
os.path.abspath(path)
; os.path.basename(path)
; os.path.dirname(path)
os.path.exists(path)
os.path.isdir(path)
pickle
е модул, който може да сериализира прости Python обекти.
pickle.dump(object, file)
pickle.load(file)
pickle.dumps(object)
- връща низpickle.loads(str)
- връща обект от низimport pickle
with open('/tmp/foo.txt', 'wb') as file:
pickle.dump("The answer", file)
pickle.dump(["spam", "eggs", "ham"], file)
with open('/tmp/foo.txt', 'rb') as file:
print(pickle.load(file))
print(pickle.load(file))
shelve
е сравнително прост модул, който позволява да записвате данни във файл под формата на речник.pickle
.import shelve
db = shelve.open('/tmp/foo.db')
db['name'] = 'Mityo the Python'
db['age'] = 33
db['favouriteBands'] = ["Blackmore's Night", "Deep Purple", "Rainbow"]
db['favouriteSong'] = "Colubrid on the Tree"
db.close()
db = shelve.open('/tmp/foo.db')
print(db.keys())
print(db['name'])
print(db['favouriteBands'])
print(db['favouriteSong'])
db.close()
json
е модул, който може да сериализира прости Python обекти.
json.dump(object, file)
json.load(file)
json.dumps(object)
- връща низjson.loads(str)
- връща обект от низ>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
b'aa'
и b'\x7f\x00'
.decode(encoding)
bytes
с .encode(encoding)
Понякога ни трябва нещо да сериализираме в нещо „low level“ - нещо като за C
struct.pack
- „опакова“ неща в байтовеstruct.unpack
- „разопакова“ неща в байтове
>>> struct.pack('bbH', 4,0,3)
b'\x04\x00\x03\x00'
>>> struct.unpack('bbH', b'\x04\x00\x03\x00')
(4, 0, 3)
import csv
with open('/tmp/eggs.csv', 'w') as file:
spam_writer = csv.writer(file, delimiter=',', quotechar='"')
spam_writer.writerow(['Spam'] * 2 + ['Baked Beans'])
spam_writer.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
with open('/tmp/eggs.csv', 'r') as file:
spam_reader = csv.reader(file, delimiter=',', quotechar='"')
for row in spam_reader:
print(' & '.join(row))
# Spam & Spam & Baked Beans
# Spam & Lovely Spam & Wonderful Spam
configparser
- модул за обработка на .conf файлове:
[auth] username = someone password = somepass [report] url = http://docs.python.org
import configparser
config = configparser.ConfigParser()
config.add_section('auth')
config.set('auth', 'password', 'm@st@')
with open('/tmp/test.cfg', 'w') as file:
config.write(file)
config = configparser.ConfigParser()
config.read('/tmp/test.cfg')
print(config.get('auth', 'password')) # -> "m@st@"
getopt
- parser за опции от командния ред
import getopt, sys
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
except getopt.GetoptError as err:
print(err) # will print something like "option -a not recognized"
print(usage())
sys.exit(1)
output, verbose = None, False
for o, a in opts:
if o == "-v": verbose = True
elif o in ("-h", "--help"):
usage()
sys.exit()
elif o in ("-o", "--output"): output = a
else: assert False, "unhandled option"
pass # TODO
if __name__ == "__main__":
main()
Ами ако не искаме нещата да отиват във файл ами в низ.
.read
, .write
и подобни.getvalue()
from io import StringIO
data = StringIO()
config = configparser.ConfigParser()
config.add_section('auth')
config.set('auth', 'password', 'm@st@')
config.write(data)
print(data.getvalue())
xml.dom.minidom
— Lightweight DOM implementation
import xml.dom.minidom document = """\ <slideshow> <title>Demo slideshow</title> <slide>slide1</slide> <slide>slide2</slide> </slideshow> """ dom = xml.dom.minidom.parseString(document)
def getText(nodelist):
rc = ""
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc = rc + node.data
return rc
def handleSlideshow(slideshow):
print("<html><title>",
getText(slideshow.getElementsByTagName("title")[0].childNodes),
"</title><body>")
handleSlides(slideshow.getElementsByTagName("slide"))
print("</body></html>")
def handleSlides(slides):
for slide in slides:
print('<div id="slide">',
getText(slide.childNodes),
'</div>')
handleSlideshow(dom)
from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Encountered the beginning of a {0} tag".format(tag))
def handle_endtag(self, tag):
print("Encountered the end of a {0} tag".format(tag))
urllib.request
- за работа с http
urllib2
import urllib.request
import urllib.parse
params = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
#GET
f = urllib.request.urlopen("http://www.python.org/cgi-bin/query?{0}".format(params))
print(f.read())
# Същото с POST
f = urllib.request.urlopen("http://www.python.org/cgi-bin/post",
data=params)
print(f.read())
hashlib
base64
email
mimetypes
logging
zlib
gzip
bz2
zipfile
tarfile
def foo(x:int, y:float) -> str: …
Syntax
def func(v1: expression,
v1: expression = 3,
*args: expression,
**kwargs: expression) -> expression:
...(body)
Достъпват се с f.__annotations__
def add(a:int, b: float=1) -> float:
return a + b
print(add(3, 3.6))
print(add.__annotations__)
import inspect
def add(a:int, b: float=1) -> float:
return a + b
specs = inspect.getfullargspec(add)
>>> specs.defaults
(1,)
>>> specs.args
['a', 'b']
>>> specs.annotations
{'a': <class 'int'>, 'b': <class 'float'>, 'return': <class 'float'>}
# inspect.ismethod
# inspect.isgenerator
# ...