collections queue、os、datetime,序列化(json和pickle)模块
Collections 模块
Collections模块的数据类型:Counter、deque、defaultdict、namedtuple、orderedDict等。
1.nametuple
nametuple:官方读法叫做“具名元组”,生成可以使用名字来访问元素内容的tuple。
比如生成地理坐标:
Namedtuple(‘名称’,‘参数’),参数既可以是一个可迭代对象,也可以是字符串,字符串之间要用空格隔开,我们所传的值要与参数的个数数量一致。
生成扑克牌:
2.deque(双端队列)
队列是先进先出,也叫FIFO(first in first out),双端队列就是两端都能进出,特点:使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候插入和删除效率很低。Deque是为了高效实现插入和删除操作的双向列表,适用于队列和栈。
对列的先进先出
图中可以看出,如果队列中的值取完了,程序会在原地等待,直到从队列中拿到值才会停止,我们往队列放值的顺序是1,2,3,4,,,取出的时候仍然是1,2,3,4的顺序,所以是先进先出。
3.双端队列(deque):
队列是不应该支持任意位置插值的,只能在首尾插值;但双端队列有些特殊,可以根据索引在任意位置用insert插值,下图是实例。
4.Odereddict(有序字典):
使用dict是无序的,在对dict迭代时,我们无法确定key的顺序。如果要保持key的顺序,可以用OrderedDict。以下实例在Python2证明一下为何dict无序,而orderedict是有序字典。
5.Defaultdict(默认字典,首字母要大写):
6.Counter(计数器,首字母要大写)
counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。counter类和其他语言的bags或multisets很相似。
time模块
调用方法:import time
和时间有关的我们就要用到时间模块,在使用时,应该先导入这个模块。
常用方法:
1)time.time()获取当前时间戳 2)timesleep(secs) 让计算机休眠指定的时长,单位是秒
表示时间的三种方式:
(1)时间戳(Timestamp)
时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,我们运行“type(time.time)”,返回的是float类型。
(2)格式化时间
字符串(Format String)’1999-08-14’
Python 中时间日期格式化字符:
%y 两位数的年份表示(00-99) %Y四位数的年份表示 (0000-9999) %m 月份(01-12)
%d 月内的某一天 %H 24小时制小时数(0-23) %I 12小时制小 时数(01-12)
%M 分钟数(00=59)%S 秒(00-59) %p 本地A.M.或P.M.的 等价符
(3)结构化时间(struct_time)
struct_time元组共有9个元素:(年月日时分秒,一年中的第几周,一年中的第几天等)
(4)三种时间之间的转换
(5)时间字符串的拼接
Datetime:
调用方法:import datetime
random(随机模块)
Import random
print(random.randint(1,6)) # 随机取一个你提供的整数范围内的数字 包含首尾
print(random.random()) #随机取0~1之间的小数
print(random.choice([1,2,3,4,5,6])) #摇号,随机从列表中取一个元素
res=[1,2,3,4,5,6]
random.shuffle(res) #洗牌
Print(res)
生成随机验证码案例:
要求:验证码由大写字母、小写字母、数字组成,生成5位随机验证码。
运用的知识点:chr:将ASCII码表里面对应的十进制数字转换成对应的大小写字母。
OS模块 (跟操作系统打交道的模块)
Import os
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.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
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下的模块:listdir
listdir 可以获取指定文件夹下的全部文件的内容
路径拼接
os 和 sys 模块组合添加环境变量
os模块下各个方法使用实例
序列化模块
序列化:其他数据类型转换成字符串的过程; 反序列化:字符串转成其他数据类型
序列化目的:1、以某种存储形式使自定义对象持久化;2、将对象从一个地方传递到另一个地方。3、使程序更具维护性。
所有的语言都支持json格式支持的数据类型很少,字符串,列表,字典, 整型 ,元组(转成列表),布尔值;
pickle模块(****)
只支持python ,python所有的数据类型都支持.
dumps:序列化 将其他数据类型转成json格式的字符串
loads:反序列化 将json格式的字符串转换成其他数据类型
json模块序列化字典和列表 用dumps 和 loads
json 模块
json可以序列化的数据类型
"""
Extensible JSON <http://json.org> encoder for Python data structures.Supports the following objects and types by default:
可扩展json<http://json.org>用于python数据结构的编码器。默认支持以下对象和类型:
Python | JSON |
---|---|
dict | object |
list,tuple | array |
str | string |
int,float | number |
True | true |
False | false |
None | null |
To extend this to recognize other objects, subclass and implement a
``.default()`` method with another method that returns a serializable
object for ``o`` if possible, otherwise it should call the superclass
implementation (to raise ``TypeError``).
为了扩展它以识别其他对象,子类化并实现``.default()``方法与另一个返回可序列化的方法
对象,如果可能的话,它应该调用超类实现(引发“typeerror”)。
json序列化和反序列化 写、读文件用dump和load
# 元组序列化之后,再经反序列化就变成了列表。
import json
t=(1,2,3,4,5)
res=json.dumps(t)
print(res,type(res))
print(json.loads(res),type(json.loads(res)))
'''
[1, 2, 3, 4, 5] <class 'str'>
[1, 2, 3, 4, 5] <class 'list'>
'''
Pickle模块
Pickle转码文件,直接将文件写成二进制,读的时候默认也是二进制形式,即‘rb’模式读取。
collections queue、os、datetime,序列化(json和pickle)模块的更多相关文章
- python---基础知识回顾(四)(模块sys,os,random,hashlib,re,序列化json和pickle,xml,shutil,configparser,logging,datetime和time,其他)
前提:dir,__all__,help,__doc__,__file__ dir:可以用来查看模块中的所有特性(函数,类,变量等) >>> import copy >>& ...
- python-时间模块,random、os、sys、shutil、json和pickle模块
一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...
- python 模块 - 序列化 json 和 pickle
1,引入 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval ...
- os模块,sys模块,json和pickle模块,logging模块
目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import ...
- 模块讲解---os模块,sys模块,json和pickle模块,logging模块
目录 模块的用法 os模块 常用的功能 sys模块 常用的功能 json和pickle模块 4. logging模块 模块的用法 通过 import 或者from......import...... ...
- Python之时间模块、random模块、json与pickle模块
一.时间模块 1.常用时间模块 import time # 时间分为三种格式 #1.时间戳---------------------以秒计算 # start= time.time() # time.s ...
- python模块(json和pickle模块)
json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个 ...
- Python json和pickle模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
- 包--json 与 pickle 模块
一. 包 一个含有__init__.py 文件的文件夹(将py 文件中的内容划分成不同的部分放在不同的py 文件中,在将这些py 文件放在一个文件夹中) 是模块,不做执行文件,仅做调用 m1.py 和 ...
- python常用模块之json、pickle模块
python常用模块之json.pickle模块 什么是序列化? 序列化就是把内存里的数据类型转换成字符,以便其能存储到硬盘或者通过网络进行传输,因为硬盘或网络传输时只接受bytes. 为什么要序列化 ...
随机推荐
- elasticsearch mappings之dynamic的三种状态
目录 前言 动态映射(dynamic:true) 静态映射(dynamic:false) 严格模式(dynamic:strict) 返回主目录 前言 回到顶部 一般的,mapping则又可以分为动态映 ...
- unity shader 波动圈
c# //////////////////////////////////////////// // CameraFilterPack - by VETASOFT 2018 ///// /////// ...
- django.db.migrations.exceptions.BadMigrationError: Migration tests in app bl
这个错误基本上都是 替换文件后才会出现的问题 因为你替换后他的日志文件没有完全替换的话,那么日志对应不到就会出现这样的问题, 一个模糊的处理办法:重新进行数据迁移:首先删除migrations中除去_ ...
- Docker面试题(二)
什么是虚拟化? 虚拟化允许您在相同的硬件上运行两个完全不同的操作系统.每个客户操作系统都经历了引导,加载内核等所有过程.您可以拥有非常严格的安全性,例如,客户操作系统无法完全访问主机操作系统或其他客户 ...
- switch-case的选择用法
企业发放的奖金根据利润提成.利润I低于或等于100000元的,奖金可提0.1:利润高于100000元,低于200000(100000<I<=200000)时,低于100000元的部分按10 ...
- 关于Eclipse及JDK安装过程中的一些问题
一,环境变量的配置 1.配置CLASSPATH系统变量 CLASSPATH系统变量为类查找路径 ①.在使用javac进行编译时遇到import时候就会通过这个变量里面配置的路径去查找.如果配置的是目录 ...
- [Python3] 025 包
目录 1. 模块 1.1 模块是什么? 1.2 为什么用模块? 1.3 如何定义模块? 1.4 如何使用模块? 1.4.1 例子1 1.4.2 例子2 1.4.3 例子3 1.4.4 例子4 1.4. ...
- SpringBoot_02通用mapper
注意:一旦引入了通用Mapper的启动器,会覆盖Mybatis官方启动器的功能,因此需要移除对官方Mybatis启动器的依赖. 无需任何配置就可以使用了.如果有特殊需要,可以到通用mapper官网查看 ...
- QT use of undeclared identifier 'cout'
在QT 5.12中直接使用cout将提示错误如下: 添加库 #include<iostream>,并将cout&end改为std::cout&std::endl 代码如下: ...
- C语言 --- 高级指针
1. 指针赋值: C语言允许使用赋值运算进行指针的赋值,前提是两个指针具有相同的类型. int i,*p,*q; p = &i; ...