标准库
os模块:提供与操作系统相关联的函数
import os
os.getcwd() # 返回当前的工作目录
os.chdir('/server/accesslogs') # 修改当前的工作目录
os.system('mkdir aaa') # 执行系统命令mkdie aaa
sys模块:通用工具脚本经常调用命令行参数
import sys
sys.argv # 从程序外部获取参数的桥梁,是一个列表
sys.stdout.write() # 相当于print
sys.stdin.readline() # 相当于input
sys.stderr # 用于显示警告或错误信息
sys.exit() # 脚本定向终止
re模块:为高级字符串处理提供了正则表达式工具
import re
re.findall()
re.sub()
re.match()
math模块:为浮点运算提供了对底层C函数库的访问
import math
math.log(1024, 2)
math.cos(math.pi / 4)
random模块:提供随机生成数的工具
import random
random.choice(['apple', 'pear', 'banana'])
random.sample(range(100), 10)
random.random()
datetime模块:日期和事件处理同事提供了简单和复杂的方法
import datetime
datetime.date.today()
datetime.now()
测试模块:
doctest模块:提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试
doctest模块搜索类似于交互式Python会话的文本段,然后执行这些会话来验证他们是否如所示的那样。
常见使用doctest的方式:
- 通过检测所有的文档中的交互式例子输出正常来检查一个模块的文档字符串为最新的。
- 通过验证来自测试文件或者测试对象的交互式例子的输出像预期一样来执行回归测试。
- 为一个包编写教程文档,主子地输入-输出例子来说明。
def average(values):
"""Computes the arithmetic mean of a list of numbers.
>>> print(average([20, 30, 70]))
40.0
"""
return sum(values) / len(values)
import doctest
doctest.testmod() # 自动验证嵌入测试
unittest模块:单元测试框架
unittest 单元测试框架是受到 JUnit 的启发,与其他语言中的主流单元测试框架有着相似的风格。其支持测试自动化,配置共享和关机代码测试。支持将测试样例聚合到测试集中,并将测试与报告框架独立。
一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。 unittest 提供一个基类: TestCase ,用于新建测试用例。
import unittest
class TestStringMethods(unittest.TestCase):
def test_upper(self):
self.assertEqual('foo'.upper(), 'FOO')
def test_isupper(self):
self.assertTrue('FOO'.isupper())
self.assertFalse('Foo'.isupper())
def test_split(self):
s = 'hello world'
self.assertEqual(s.split(), ['hello', 'world'])
# check that s.split fails when the separator is not a string
with self.assertRaises(TypeError):
s.split(2)
if __name__ == '__main__':
unittest.main()
第三方库
网络爬虫
requests:用python语言编写,基于urllib库,采用开源协议的HTTP库
比urllib方便,可以节约大量工作,完全满足HTTP测试需求。
import requests
r = requests.get('http://www.baidu.com') # 最基本的GET请求
print(r.status_code) # 获取返回状态
print(r.text) # 打印解码后的返回数据
GET请求 requests.get(‘https://httpbin.org/get’)
POST请求 requests.get(‘https://httpbin.org/post’)
PUT请求 requests.put(‘https://httpbin.org/put’)
DELETE请求requests.get(‘https://httpbin.org/delete’)
HEAD请求 requests.get(‘https://httpbin.org/head’)
OPTIONS请求requests.get(‘https://httpbin.org/options’)
requests.get(URL, auth=HTTPDigestAuth('user', 'pass')) # 身份认证
requests.get('http://github.com', timeout=0.01)
scrapy:快速、高层次、轻量级的屏幕抓取和web抓取的python爬虫框架
bench:性能测试
fetch:读取源代码
genspider:生成爬虫文件
runspider:运行爬虫文件
settings:爬虫设置
shell:终端操作
startproject:创建项目
version:查看版本
check:检查代码是否出错
crawl:运行一个爬虫
edit:编辑爬虫
list:列出有效的爬虫
parse:解析url并打印出结果
Scrapy数据处理流程:
- 当需要打开一个域名时,爬虫开始获取第一个url,并返回给引擎
2.引擎把url作为一个请求交给调度器
3.引擎再次对调度器发出请求,并接收上一次让调度器处理的请求
4.引擎将请求交给下载器
5.下载器下载完成后,作为响应返回给引擎
6.引擎把响应交给爬虫,爬虫开始进一步处理,处理完成后有两个数据,一个是需要跟进的url,另一个是获取到的item数据,然后把结果返回给引擎
7.引擎把需要跟进的url给调度器,把获取的item数据给管道
8.然后从第2步开始循环,知道获取信息完毕。只有调度器中没有任何请求时,程序才会停止
数据分析
numpy:python的科学计算模块,底层实现用c代码,运算效率很高;numpy的核心是矩阵narray运算
矩阵拥有的属性
ndim属性:维度个数
shape属性:维度大小
dtype属性:数据类型
pandas:python的一个大数据处理模块,pandas使用一个二位的数据结构dateframe来表示表格的数据
文本处理
pdfminer
openpyxl
python-docx
beautifulsoup4
用户图形界面
PyQt5
pygtk
web开发
django
flask
游戏开发
pygame
panda3D