python第三方包
-
代码优化异常输出包
一行代码优化输出的异常信息
pip install pretty-errors
# 写一个测试函数 def divided_zero(): for i in range(10, -1, -1): print(10/i) divided_zero() ''' 1.0 1.1111111111111112 1.25 1.4285714285714286 1.6666666666666667 2.0 2.5 3.3333333333333335 5.0 10.0 --------------------------------------------------------------------------- ZeroDivisionError Traceback (most recent call last) <ipython-input-1-8917413a0c69> in <module> 3 for i in range(10, -1, -1): 4 print(10/i) ----> 5 divided_zero() <ipython-input-1-8917413a0c69> in divided_zero() 2 def divided_zero(): 3 for i in range(10, -1, -1): ----> 4 print(10/i) 5 divided_zero() ZeroDivisionError: division by zero # 出错信息很简洁 '''
-
图像处理包pillow
两⾏代码实现旋转和缩放图像
⾸先安装pillow:
pip install pillow
旋转图像45度:
from PIL import Image im = Image.open('图片地址') im.rotate(45).show()
等比例缩放图像:
im.thumbnail((128,72),Image.ANTIALIAS)
过滤图像后的效果图:
from PIL import ImageFilter im.filter(ImageFilter.CONTOUR).show()
-
一行代码找到编码
兴⾼采烈地,从⽹页上抓取⼀段 content 但是,⼀ print 就不那么兴⾼采烈了,结果看到⼀串这个:
b’\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xd3\xc3Python’
这是啥? 又 x 又 c 的! 再⼀看,哦,原来是⼗六进制字节串 ( bytes), \x 表⽰⼗六进制 接下来,你⼀定想转化为⼈类能看懂的语⾔,想到 decode:
b'\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xd3\xc3Python'.decode() ''' --------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) <ipython-input-2-7d0ea6148880> in <module> ----> 1 b'\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xd3\xc3Python'.decode() UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte '''
马上,⼀盆冷⽔泼头上,抛异常了。。。。。
根据提⽰, UnicodeDecodeError,这是 unicode 解码错误。
原来, decode 默认的编码⽅法: utf-8
所以排除 b’\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xd3\xc3Python’ 使⽤ utf-8 的编码 ⽅式
可是,这不是四选⼀选择题啊,逐个排除不正确的!
编码⽅式⼏⼗种,不可能逐个排除吧。
那就猜吧!!!!!!!!!!!!!
⼈⽣苦短,我⽤Python
Python, 怎忍⼼让你受累呢~
尽量三⾏代码解决问题
第⼀步,安装 chardet 它是 char detect 的缩写。
第⼆步,pip install chardet
第三步,出结果
import chardet chardet.detect(b'\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xd3\xc3Python') ''' {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'} '''
编码⽅法:gb2312
解密字节串:
b'\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xd3\xc3Python'.decode('gb2312') ''' '人生苦短,我用Python' '''
⽬前, chardet 包⽀持的检测编码⼏⼗种,如下所⽰: