常用模块

匿名 (未验证) 提交于 2019-12-02 23:49:02

常用模块

'''

在内置数据类型(dict、list、set、tuple)的基础上,collecttions模块还提供了额外的数据类型:Counter、deque、defaultdict、namedtuple和Ordereddict等。

1、namedtuple:具名元组,具有名字的元组,生成可以使用名字来访问元素内容的tuple

2、deque:双端队列,可以快速的从另外一侧追加和推出对象

3、Counter:计数器,主要用来计数

4、OrderedDict:有序字典

5、defaultdict:带有默认值的字典

'''

#namedtuple

 

  

用具名元组来记录一个城市的信息

>>> from collections import namedtuple >>> City = namedtuple('City','name country population coordinates')  #第一个是类明明,第二个是类的各个字段的名字,后者可以是由数个字符串组成的可迭代对象,或者是由空格分隔开的字段名组成的字符。 >>> tokyo = City('Tokyo','JP',36.933,(35.689722,139.691667)) >>> tokyo City(name='Tokyo', country='JP', population=36.933, coordinates=(35.689722, 139.691667)) >>> City(name='Tokyo',country='JP',population=36.933,coordinates=(35.689722,139.691667)) >>> tokyo.population 36.933 >>> tokyo.coordinates (35.689722, 139.691667) >>> tokyo[1] 'JP' 

  

队列:先进先出FIFO(first in first out)

 

  

deque 双端队列

两端都能进值,两端都能取值

特殊点:双端队列可以根据索引在任意位置插值

队列不应该支持任意位置插值,只能在首尾插值(不能插队)

四种方法:append(尾部追加),appendleft,pop(末尾取值),popleft

 

  

OrderedDict 有序字典

from collections import OrderedDict order_d = OrderedDict([('a',1),('b',2),('c',3)]) order_d1 = OrderedDict() order_d1['x'] = 1 order_d1['y'] = 2 order_d1['z'] = 3 print(order_d1) for i in order_d1:     print(i) #print(order_d1) 

  

defaultdict默认值字典

有如下值集合[11,22,33,44,55,66,77,88,99...],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。

即:{'k1':大于66,'k2':小于66}

 

  

Counter

#例:统计s = 'abcdeabcdabcaba'这个字符串每一个字符,在当前字符串出现的次数 from collections import Counter s = 'abcdeabcdabcaba' res = Counter(s) print(res) 

  

时间模块

time时间的表达形式有三种:

1、时间戳

2、格式化时间(主要是用来展示给人看的)

3、结构化时间

 
View Code

时间戳、结构化时间、格式化时间之间的互相转换

 

time.sleep() #让程序睡多久

 

时间之间的运算

 

  

小练习:计算今天距离今年过生日还有多少天

birth = datetime.data(2019,12,21) current_time = datetime.date.today() print(birth-current_time)  #156 days, 0:00:00
View Code

UTC时间

 

  

 

random模块:随机模块

 

  

例:生成5位数的随机验证码,大写字母、小写字母、数字

chr

random.choice

封装成一个函数,用户想生成几位就生成几位

def get_code(n):     cofe = ''     for i in range(n):         #先生成随机的大写字母,小写字母,数字         upper_str = chr(random.randint(65,90))         lower_str = chr(random.randint(97.122))         random_int = str(random.randint(0,9))         #从上面三个钟随机选择一个作为随机验证码的某一位         code +       =random.choice([upper_str,lower_str,random_int])     return(code) res = get_code(4) print(res) 

  

os模块:跟操作系统打交道的模块

常见的

 

 
 
View Code

 
 

  

 

序列化模块

序列:字符串

序列化:其他数据类型转换成字符串的过程

1、写入文件的数据必须是字符串

2、基于网络传输的数据必须是二进制

str.encode()才能变成二进制,统一转成字符串,才能转成二进制

因为只有转成了字符串,才能够做一个数据的存储(传输)

序列化:其他数据类型转成字符串的过程

反序列化:字符串转成其他数据类型

json模块

1、能够将数据类型转换成字符串存起来,基于网络传输

2、所有的语言都支持json格式(相当于中间人)

缺点:支持的数据类型很少

支持:(字符串、列表、字典、整型、元组(转成列表来存的)、布尔值,这几个是可以序列化的

dumps:序列化,将其他数据类型转成json格式的字符串

loads:反序列化,将json格式的字符串转换成其他数据类型

d = {"name":"jason"} print(d) res = json.dumps(d)   #json格式的字符串,必须是双引号,它内部对应的是:'{"name":"jason"}',外层是单引号,内层是双引号 print(res,type(res)) res1 = json.loads(res)   #loads一下又从字符串变成字典 print(res1,type(res1)) 

  

dump:传文件

load:传文件

d = {"name":"jason"} #写入文件 with open('userinfo','w',encoding='utf-8') as f:     json.dump(d,f)   #先转字符串并自动写入文件     json.dump(d,f)      #取出来 with open('userinfo','r',encoding='utf-8') as f:     res1 = json.load(f)   #不能够多次反序列化     res2 = json.load(f)     print(res1,type(res1))     print(res2,type(res2)) 

  

 

ensure_ascii=False 不要转码

pickle模块

缺点:只支持python语言

优点:python所有的数据类型都支持

用pickle操作文件的时候,文件的打开模式必须是b模式

 

  

subprocess(子进程)

sub:子

process:进程

1、用户通过网络连接上了你的这台电脑

2、用户输入相应的命令,基于网络发送给了你这台电脑上摸个程序

3、获取用户命令,里面subprocess执行该用户命令

4、将执行结果再基于网络发送给用户

这样就实现用户远程操作你这台电脑的操作

 

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!