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/'): passos.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())
hashlibbase64emailmimetypesloggingzlibgzipbz2zipfiletarfiledef 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
# ...