s = b'\x42\x4d\x38\x8c\x0a\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x80\x02\x00\x00\x68\x01\x00\x00\x01\x00\x18\x00' # BMP格式采用小端方式存储数据,文件头的结构按顺序如下:
# 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数, # 把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。 import hashlib md5 = hashlib.md5() md5.update('how to used md5 in python hashlib'.encode('utf-8')) md5.update('how to used md5 in python hashlib too'.encode('utf-8'))#more time print(md5.hexdigest()) sha1 = hashlib.sha1() sha1.update('how to use sha1 in '.encode('utf-8')) sha1.update('python hashlib?'.encode('utf-8')) print(sha1.hexdigest())
r''' for x in natuals: print(x) cs = itertools.cycle('ABC') # 注意字符串也是序列的一种 for c in cs: print(c) ns = itertools.repeat('A', 3) for n in ns: print(n) ''' # 无限序列虽然可以无限迭代下去,但是通常我们会通过takewhile()等函数根据条件判断来截取出一个有限的序列 ns = itertools.takewhile(lambda x: x <= 10, natuals) print(list(ns))
# itertools提供的几个迭代器操作函数chain(),groupby() # chain()可以把一组迭代对象串联起来,形成一个更大的迭代器 for c in itertools.chain('ABC', 'XYZ'): print(c) # 迭代效果:'A' 'B' 'C' 'X' 'Y' 'Z' # groupby()把迭代器中相邻的重复元素挑出来放在一起 for key, group in itertools.groupby('AAABBBCCAAA'): print(key, list(group)) # 迭代效果 # A ['A', 'A', 'A'] # B ['B', 'B', 'B'] # C ['C', 'C'] # A ['A', 'A', 'A']
# urllib # urllib提供了一系列用于操作URL的功能。 # Get # urllib的request模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应: from urllib import request
with request.urlopen('https://api.douban.com/v2/book/2129650') as f: data = f.read(); print('Status:',f.status, f.reason) for k, v in f.getheaders(): print('%s : %s' % (k, v)) print('Data: ',data.decode('utf-8'))
# 如果我们要想模拟浏览器发送GET请求,就需要使用Request对象,通过往Request对象添加HTTP头, # 我们就可以把请求伪装成浏览器。例如,模拟iPhone 6去请求豆瓣首页 from urllib import request
req = request.Request('http://www.douban.com/') req.add_header('User-Agent','Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25') with request.urlopen(req) as f: print('Status:', f.status, f.reason) for k, v in f.getheaders(): print('%s: %s' % (k, v)) print('Data:', f.read().decode('utf-8'))
req = request.Request('https://passport.weibo.cn/sso/login') req.add_header('Origin', 'https://passport.weibo.cn') req.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25') req.add_header('Referer', 'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F')
with request.urlopen(req, data=login_data.encode('utf-8')) as f: print('Status:', f.status, f.reason) for k, v in f.getheaders(): print('%s: %s' % (k, v)) print('Data:', f.read().decode('utf-8')) '''
# Mac:myproject michael$ virtualenv --no-site-packages venv # Using base prefix '/usr/local/.../Python.framework/Versions/3.4' # New python executable in venv/bin/python3.4 # Also creating executable in venv/bin/python # Installing setuptools, pip, wheel...done. # 命令virtualenv就可以创建一个独立的Python运行环境,我们还加上了参数--no-site-packages,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。
# 虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) for x in [b'Joy', b'Tom', b'Mal']: s.sendto(x,('127.0.0.1', 9999)) print(s.recv(1024).decode('utf-8')) s.close()