一、collections模块:提供额外的数据类型
from collections import 类型名
1、可命名元组namedtuple
a = namedtuple('point',['x','y'])
a1=a(1,2)
a1.x=1
a1.y=2
对于一些有相同属性的元素就可以这样来取值
2、双端队列deque:可从两端取值删值,先进先出
q = depue( [ ] )
q.append() 在末尾追加
q.appendleft() 在开头添加
q.pop() 在末尾删除
q.popleft() 在开头删除
3、OrderedDict 有序字典
4、defaultdict 有默认值的字典
5、counter 计数器
(字符串)自动输出每个字符出现的次数,也可以指定内容
二、time模块
1、表示时间的方法:
(1)时间戳:time.time() 从1970年1月1日0时开始到现在的秒数,浮点型
(2)字符串:time.strftime() %Y年%m月%d日%H时%M分%S秒
(3)元组:time.localtime()
2、相互转换
(1)时间戳转元组:localtime()中国时间 gmtime()英国时间
元组转时间戳:mktime()
(2)元组转字符串:strftime('%Y-%m-%d',time.localtime()) 指定字符串的格式,元组方法表示的时间
asctime()
字符串转元组:strptime('2013-9-11','%Y-%m-%d') 指定要转换的字符串的格式
(3)时间戳转字符串:ctime(时间戳)
三、random模块:用于随机生成或返回一个值或多个值
1、choice(可迭代)随机返回一个元素
2、randint(1,5) 随机返回一个>=1 <=5的数字,这里的范围就是两端都包括了
3、sample(可迭代,2) 随机返回2个元素,输出列表,2代表返回元素个数
4、shuffle(列表) 打乱列表顺序输出
四、sys模块:用来和python解释器交互
1、sys.argv 命令行参数,第一个元素是程序本身路径
2、sys.version python版本
3、sys.exit 退出
4、sys.path 模块的搜索路径,里面有可调用的模块的所有路径,是列表,可追加需要的模块
5、sys.platform 返回当前操作系统平台是什么
五、os模块:用来和操作系统交互
1、和目录(文件夹)有关
2、和路径有关
3、和文件相关
4、和操作系统相关
5、和系统命令相关
''' 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 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' os.system("bash command") 运行shell命令,直接显示 os.popen("bash command) 运行shell命令,获取执行结果 os.environ 获取系统环境变量 os.path 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所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小 '''
注意:os.stat('path/filename') 获取文件/目录信息 的结构说明
stat 结构: st_mode: inode 保护模式 st_ino: inode 节点号。 st_dev: inode 驻留的设备。 st_nlink: inode 的链接数。 st_uid: 所有者的用户ID。 st_gid: 所有者的组ID。 st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。 st_atime: 上次访问的时间。 st_mtime: 最后一次修改的时间。 st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。 stat 结构
六、序列化模块
序列化:字典列表等转变为字符串的过程
目的:存储持久化;对象从一个地方传递到另一个地方;程序更具维护性
1、json
(1)一般用在网络传输:
dumps(字典)序列化成字符串
loads(字符串) 反序列化成字典,字符串要求必须是单引号,其中字典的key用双引号,否则无法反序列化
(2)一般用于文件操作:
dump(字典,文件句柄)将序列化后的字符串写到文件中,文件模式不能为只读
load(文件句柄) 读取文件内容反序列化成字典后输出
注意:
非汉字的字符串json序列化时都会完全的显示字符串来不会有乱码,但当有中文字符时序列化时就会显示编码(十六进制),所以dump(eniure_ascii=False)使用这个参数中文字符就会被完全的序列化显示出来,不会显示出编码
2、pickle
提供的方法和json完全一样
(1)和json的区别:
1)json一般处理python中基本的数据类型,字典列表和元组;pickle可以处理所有的数据类型包括自己定义出来的,所以json只适用于python,而pickle序列化出的字符串可以被其它语言识别
2)json序列化出的字符串会被完整的显示出来,而pickle显示出来的是字节类型,所以在写文件时要用wb模式
3、shelve
(1)只有1个open方法,不支持多个应用同时向一个文件写
#shelve import shelve f = shelve.open('shelve_file') #f = {} f['key1'] = {'int':10, 'float':9.5, 'string':'Sample data'} #直接对文件句柄操作,就可以存入数据 f['key2'] = {'int':10, 'float':9.5, 'string':'Sample data'} #直接对文件句柄操作,就可以存入数据 f.close()
(2)使用参数:writeback=True 就可以进行修改
(3)缺点:占用内存