struct模块中最主要的三个函数式pack()、unpack()、calcsize()。
- pack(fmt, v1, v2, …) —— 根据所给的fmt描述的格式将值v1,v2,…转换为一个字符串。
- unpack(fmt, bytes) —— 根据所给的fmt描述的格式将bytes反向解析出来,返回一个元组。
- calcsize(fmt) —— 根据所给的fmt描述的格式返回该结构的大小。
示例代码
1 | import struct |
二、tqdm: 进度条
1 | In [1]: from tqdm import tqdm |
三、itertools
- itertools:为高效循环而创建迭代器的函数
本模块实现一系列 iterator ,这些迭代器受到APL,Haskell和SML的启发。为了适用于Python,它们都被重新写过。本模块标准化了一个快速、高效利用内存的核心工具集,这些工具本身或组合都很有用。它们一起形成了“迭代器代数”,这使得在纯Python中有可能创建简洁又高效的专用工具。以下为使用示例:
1 | # -*- coding: utf-8 -*- |
四、collections
1 | """ |
五、os
- 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(“bash command”) 运行shell命令,直接显示
- os.environ 获取系统环境变量
- os.path.abspath(path) 返回path规范化的绝对路径
- os.path.split(path) 将path分割成目录和文件名二元组返回
- os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
- 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 返回操作系统平台名称
- sys.stdout.write(‘please:’)
- val = sys.stdin.readline()[:-1]
七、hashlib
hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string=”) 方法可通过指定系统所支持的hash算法来构造相应的hash对象.
1 | from hashlib import md5, sha1, sha224, sha256, sha384, sha512 |
以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
1 | import hashlib |
除此之外,python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
1 | import hmac |
八、json和pickle
用于序列化的两个模块
- json,用于字符串 和 python数据类型间进行转换
- pickle,用于python特有的类型 和 python的数据类型间进行转换
Json模块提供了四个功能:dumps、dump、loads、load
pickle模块提供了四个功能:dumps、dump、loads、load
1. json
- json.dumps (obj):将 python 对象编码转化为 json 字符串
- json.loads (str):将 json 格式转化为 python dict格式
- json.dump(f, obj):dump 和 dumps 的功能一样,将 dict 转化为 str 的格式,然后存入文件中。
- json.load(f) :load 和 loads 的功能一样,从文件中读取 str 格式并将其转化为json。
示例
1 | import json |
2. pickle
pickle可以存储什么类型的数据呢?
所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。由任何原生类型组成的列表,元组,字典和集合, 函数,类,类的实例
pickle模块可能出现三种异常:
- PickleError:封装和拆封时出现的异常类,继承自Exception
- PicklingError: 遇到不可封装的对象时出现的异常,继承自PickleError
- UnPicklingError: 拆封对象过程中出现的异常,继承自PickleError
示例
1 | """dumps""" |
3. json和pickle的区别
- pickle可以在python之间进行交互
- json可以实现python与不同开发语言的交互
- pickle可以序列化python中的任何数据类型
- json只能序列化python中的常归数据类型(列表等)
- pickle序列化后的对象不可读
- json序列化后的对象是可读的
九、logging
日志:用来记录用户行为 或者 代码的执行的过程。用处:一键控制
- 拍错的时候需要打印很多东西来帮助我排错
- 严重的错误记录下来
- 有一些用户行为,有没有错都要记录下来
1 | import logging |
1. basicConfig
1 | import logging |
2. logger对象
1 | # logger对象配置 |
3. logger类
1 | class Logger(object): |
十、时间模块
参考:https://www.cnblogs.com/zhangyafei/p/9836850.html
十一、re正则
参考:https://www.cnblogs.com/zhangyafei/articles/10113408.html
十二、random
1 | import random |
本节讲了十二个常用的内置标准库,当然这还不是python标准库的全部,其他的内容将会在之后的内容中补充以及你自己去发现,本节到此结束。