python常用模块总结

常用内置模块

Python内置了许多非常有用的模块,无需额外安装和配置,即可直接使用。

datetime

datetime是Python处理日期和时间的标准库。通过from datetime import datetime导入的才是datetime这个类。datetime默认表示本地时间,如果要转换时区或utc时间,可以先转换为timestamp

from datetime import datetime

#1、获取当前时间
now = datetime.now() # 获取当前datetime
print(now) # 2018-08-13 12:22:01.392888
print(type(now)) # <class 'datetime.datetime'>
# 2、获取指定时间
dt = datetime(2018, 8, 13, 12, 20) # 用指定日期时间创建datetime
print(dt) # 2018-08-13 12:20:00
# 3、datetime转换为timestamp
print(dt.timestamp()) #1429417200.0
# 4、timestamp转换为 datetime
t = 1429417200.0
print(datetime.fromtimestamp(t)) #2015-04-19 12:20:00
# 5、字符串转换为datetime
cday = datetime.strptime('2018-8-13 18:19:59', '%Y-%m-%d %H:%M:%S')
print(cday)
# 6、datetime转换为字符串
print(now.strftime('%a, %b %d %H:%M'))
# 7、datetime加减
now + timedelta(hours=10) #10个小时后
now - timedelta(days=1) #一天前
now + timedelta(days=2, hours=12) #两天12小时后
collections

collections是Python内建的一个集合模块,提供了许多有用的集合类。
1、namedtuple是一个函数,用来创建一个自定义的tuple对象,并且规定了tuple元素的个数

from collections import namedtuple
# namedtuple('名称', [属性list]):
Point = namedtuple('Point', ['x', 'y']) # 定义个坐标
Circle = namedtuple('Circle', ['x', 'y', 'r']) # 顶一个圆

2、deque有时代替list,list是线性存储,数据量大的时候,插入和删除效率很低。

from collections import deque
q = deque(['a', 'b', 'c'])
q.append('x') #从尾部插入
q.appendleft('y')#从头部插入
q.pop()#从尾部移除
q.popleft()#从头部移除

3、使用dict时,如果引用的Key不存在,就会抛出KeyError;使用defaultdict可以返回一个默认值

from collections import defaultdict
dd = defaultdict(lambda: 'N/A')#定义时指定默认值N/A
dd['key1'] = 'abc'
dd['key1'] # key1存在
dd['key2'] # key2不存在,返回默认值'N/A'
os模块

用于提供目录和文件操作,这些函数有的在os模块中,有的在os.path模块中,如下:

os.getcwd()             // 获取当前工作目录,即当前Python脚本工作的目录路径
os.chdir("dirname")     // 改变当前脚本工作目录;相当于shell下cd
os.curdir               // 返回当前目录: ('.')
os.pardir               // 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    // 可生成多层递归目录
os.removedirs('dirname1') // 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')       // 创建目录,相当于shell中mkdir dirname
os.rmdir('dirname')       // 删除空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')       // 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  // 删除一个文件
os.rename("oldname","newname")  // 重命名文件/目录
os.stat('path/filename')    // 获取文件/目录信息
os.sep                   // 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep               // 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep               // 输出用于分割文件路径的字符串
os.name                  // 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bashcommand")  // 运行shell命令,直接显示
os.environ                // 获取系统环境变量
os.path.abspath(path)     // 返回path规范化的绝对路径
os.path.split(path)       // 将path分割成目录和文件名二元组返回
os.path.dirname(path)     // 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.dirname(__file__) //返回当前文件的路径
os.path.basename(path)    // 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)      // 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)       // 如果path是绝对路径,返回True
os.path.isfile(path)      // 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)       // 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[,...]])  // 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)    // 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)    // 返回path所指向的文件或者目录的最后修改时间
sys模块

用于提供对解释器相关的操作

sys.argv           // 命令行参数List,第一个元素是程序本身路径
sys.exit(n)        // 退出程序,正常退出时exit(0)
sys.version        // 获取Python解释程序的版本信息
sys.maxint         // 最大的Int值
sys.path           // 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       // 返回操作系统平台名称
hashlib模块

Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。摘要函数是一个单向函数,通过digest反推data却非常困难。注意摘要算法不是加密算法,只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。
对原始密码加盐md5(message + salt),然后计算md5,只要Salt不被黑客知道,即使用户输入简单口令,也很难通过MD5反推明文口令。

import hashlib

md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?'.encode('utf-8'))
print(md5.hexdigest())
contextlib模块

正确关闭文件资源的一个方法是使用try…finally,但是写try…finally非常繁琐。Python的with语句允许我们非常方便地使用资源,而不必担心资源没有关闭:

with open('/path/to/file', 'r') as f:
    f.read()

实际上,任何对象,只要正确实现了上下文管理,就可以用于with语句。

json 和 pickle模块

我们把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等都是一个意思。

pickle.dumps() // 返回一个str,内容就是标准的JSON。
pickle.loads() // 把JSON反序列化为Python对象
re正则表达式模块

python处理异常、日志以及正则表达式

其他模块

其他如计数器Counter、排序dic:OrderedDictrandom模块,logging
shutil模块:高级的 文件、文件夹、压缩包 处理模块(递归,文件复制等)
configparser模块:用于对特定的配置进行操作,
shelve模块:一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

常用第三方模块

pillow/chardet/psutl

图像处理标准库Pillow,如果安装了Anaconda,Pillow就已经可用了

pip install pillow/requests/chardet/psutil

psutil=process and system utilities,用简单的代码实现系统监控

requests模块

Python已经内置的urllib模块,用于访问网络资源,但不如第三方库requests好用,如果安装了Anaconda,requests就已经可用了。
1、get请求

import requests

r = requests.get('https://www.baidu.com/') 
r.status_code
r.text
r.url

对于带参数的URL,可以传入一个dict作为params参数:

r = requests.get('https://www.baidu.com/',params={'language': 'python', 'id': '1001'}) 
r.url // 输出'https://www.baidu.com/?language=python&id=1001'

如果返回是JSON数据,可以直接获取:

r = requests.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json')
r.json()

需要传入HTTP Header时,我们传入一个dict作为headers参数:

r = requests.get('https://www.baidu.com/', headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'})
r.text

2、post请求
POST请求,只需要把get()方法变成post(),然后传入data参数作为POST请求的数据:

r = requests.post('https://accounts.baidu.com/login', data={'form_email': 'abc@example.com', 'form_password': '123456'})

如果要传递JSON数据,可以直接传入json参数:

params = {'key': 'value'}
r = requests.post(url, json=params) // 内部自动序列化为JSON

3、上传文件,在读取文件时,注意务必使用’rb’即二进制模式读取,这样获取的bytes长度才是文件的长度。

upload_files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=upload_files)
r.headers //获取请求响应头
r.cookies['ts'] //获取指定cookie
//请求时传入cookie
cs = {'token': '12345', 'status': 'working'}
r = requests.get(url, cookies=cs)
r = requests.get(url, timeout=2.5) # 2.5秒后超时
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值