Python 常用的 package 和 module
文章目录
简介
Python 是通过 module 组织代码的,一个 py 文件就是一个 module,module 又是通过 package 来组织的,package 是一个包含 init.py 的文件夹,代码,module,package 它们三者的关系就是:module 包含代码,package 至少包含一个为 init.py 的 module。
|
|
Python 的 package 以及 package 中的 init.py 共同决定了 package 中的 module 是如何被外界访问的。
Other
|
|
爬虫加验证码识别使用的module
|
|
time
import time
|
|
logging
可以非常容易地记录错误信息,通过配置,logging还可以把错误记录到日志文件里,方便事后排查 logging.exception(e)
hashlib
Python的hashlib提供了常见的摘要算法(非加密算法,因为不可解密),如MD5,SHA1等等
PIL Image: (pillow)
- PIL中有九种不同模式。分别为1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。
- 对于彩色图像,不管其图像格式是PNG,还是BMP,或者JPG,在PIL中,使用Image模块的open()函数打开后,返回的图像对象的模式都是“RGB”。而对于灰度图像,不管其图像格式是PNG,还是BMP,或者JPG,打开后,其模式为“L”。
- 对于PNG、BMP和JPG彩色图像格式之间的互相转换都可以通过Image模块的open()和save()函数来完成
pytesseract
识别图片文本,直接执行终端命令tesseract来识别验证码的方式识别率会高很多
-
要安装pytesseract库,必须先安装其依赖的PIL及tesseract-ocr,其中PIL为图像处理库,而后面的tesseract-ocr则为google的ocr识别引擎。
-
Tesseract-OCR:提高图像转文本的识别率的方法:
- 安装jTessBoxEditor, 通过训练,提高图片信息的识别率
- 对验证码图片进行处理:彩色转灰度,灰度转二值,二值图像识别,同时图片放大,提高ocr识别率
-
验证码图像识别技术主要是操作图片内的像素点,通过对图片的像素点进行一系列的操作,最后输出验证码图像内的每个字符的文本矩阵。
- 读取图片
- 图片降噪
- 图片切割
- 图像文本输出
os
- os.mkdir(path), os.chdir(path),os.path.exists(path),
- os.system(‘cat /proc/cpuinfo’) #执行命令,没有返回值和输出
random
-
作用是返回随机数,只要跟随机元素相关的,都可以使用它。
-
重要函数:
- random() 返回0<=n<1之间的随机实数n;
- choice(seq) 从序列seq中返回随机的元素;
- getrandbits(n) 以长整型形式返回n个随机位;
- shuffle(seq[, random]) 原地指定seq序列;
- sample(seq, n) 从seq中选择n个随机且独立的元素;【seq包含string/list/tuple】
进程
|
|
线程
|
|
re模块
-
regex = re.compile(pattern, flags=0) # 用来编译正则表达式模式字符串,并生成Regular Expression Objects,flags经常使用re.I表示不区分大小写
-
ret_list = re.findall(regex, string, flags=0) # 查找所有匹配的值并返回一个list
-
ret = re.search(regex, string, flags =0) # 匹配任意位置的模式串 ret = re.match(regex, string, flags=0) # 只匹配位于字符串开始位置的模式串.如果想要匹配任意位置的模式串,可以使用re.search() print(ret.group()) # 打印match匹配到的值
-
re.fullmatch(regex, string, flags=0) # 返回一个和模式串完全匹配的字符串
-
re.split(pattern, string, flags=0)
-
ret.group(1) # 正则分组,参数为1,返回第1个组对应的字符串
-
re.sub(pattern, repl, string, count=0) # 用于替换字符串的匹配项
- 第一个参数:规则
- 第二个参数:替换后的字符串
- 第三个参数:字符串
- 第四个参数:替换个数。默认为0,表示每个匹配项都替换
-
re.escape(string) # 将字符串所有特殊正则表达式字符转义
urllib模块
-
quote/quote_plus:字符串url编码
1 2 3 4 5
>>> from urllib import parse >>> parse.quote('a&b/c') #未编码斜线 'a%26b/c' >>> parse.quote_plus('a&b/c') #编码了斜线 'a%26b%2Fc'
-
unquote/unquote_plus: 字符串url解码
1 2 3 4 5
from urllib import parse >>> parse.unquote('1+2') #不解码加号 '1+2' >>> parse.unquote_plus('1+2') #把加号解码为空格 '1 2'
-
urlencode:参数url编码
1 2 3 4 5 6 7
>>> from urllib import parse >>> query = { 'name': 'walker', 'age': 99, } >>> parse.urlencode(query) 'name=walker&age=99'
-
parse.urlparse(url):url解码
csv 模块
-
读
1 2 3 4 5 6 7 8 9
>>> import csv >>> with open('names.csv') as csvfile: ... reader = csv.DictReader(csvfile) ... for row in reader: ... print(row['first_name'], row['last_name']) ... Baked Beans Lovely Spam Wonderful Spam
-
写
1 2 3 4 5 6 7 8
import csv with open('names.csv', 'w') as csvfile: fieldnames = ['first_name', 'last_name'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'}) writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'}) writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})