常用模块二---time--random--collections--json--pickle--shelve

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用模块二---time--random--collections--json--pickle--shelve相关的知识,希望对你有一定的参考价值。

常用模块二

 

=================
 collections 模块
==================

 

 ========= namedtuple   可以命名的元组 ============from collections import namedtuple
 Point=namedtuple(‘Point‘,[‘x‘,‘y‘]) p=Point(1,2)circle=namedtuple(‘Circle‘,[‘x‘,‘y‘,‘r‘])c=circle(1,2,1)print(p.x)print(p.y) print(c.x) print(c.y) print(c.r)

 ======== 队列 先进先出 --双向队列 deque============

 处理任务--处理一个少一个

from collections import deque

# q=deque([1,2,3])
# q.append(4)
# q.appendleft(5)
# q.pop()
# q.popleft()
# print(q) #  deque([1, 2, 3])
# q.extendleft([1,2]) # 没有entend

 ======== 有序字典 OrderedDict============

from collections import OrderedDict

# dic=dict([(‘a‘,2),(‘b‘,3),(‘c‘,6)])
# print(dic)   # {‘a‘: 2, ‘b‘: 3, ‘c‘: 6}
# dic=OrderedDict([(‘a‘,2),(‘b‘,3),(‘c‘,6)])
# print(dic)  #  OrderedDict([(‘a‘, 2), (‘b‘, 3), (‘c‘, 6)])

# ======== 有默认值得字典 defaultdict============

# from collections import defaultdict
#
# dic=defaultdict(list)   #里面必须是可以调用的函数函数
# dic[‘k‘].append(123)
# print(dic)
# dic=defaultdict(lambda:‘N/A‘) # 括号里面是一个默认的值
#
#
# ======== counter 返回一个计数字典  ============

 

 =================
        时间 time() 模块
==================

1 时间戳 ----- 1970 1 1 00 00 00 ---- 标识唯一的时间 用来计算
2 字符串时间 ----- time.strftime(‘%Y-%m-%d %H:%M:%S‘,默认是 time.localtime())
3 格式化时间  -----time.localtime() time.gtime()

# import time
# t1=time.time()                                      #=============时间戳=======计算器应用============
#
# t2=time.localtime()   # 北京时间  东区  本时区的时间    #===========结构化时间=========操作========
# t3=time.gmtime()      # 标准时间  晚8个小时            #===========结构化时间=========操作========
#
#
# t=time.mktime(time.localtime(time.time()))  # 结构化--->> 时间戳
# t=time.strftime(‘%Y-%m-%d‘,time.localtime())  #结构化时间--->> 字符串时间   #==========字符串时间=======给人看========
# tt=time.strptime(‘2018-08-23‘,‘%Y-%m-%d‘)     # 字符串时间-->> 结构化时间   #==========字符串时间=======给人看=========
#
# t4=time.ctime(time.time())
# t5=time.asctime(time.localtime())
#
# time.sleep(0.1)  # ====I/O阻塞 不会占用CPU
# print(t2.tm_year,t2.tm_mon,t2.tm_mday,t2.tm_hour,t2.tm_min,t2.tm_sec,sep=‘:‘)
例子1  计算 几天后的时间

# time_str=‘2015-09-23‘
# def add_days(my_time,num):
#     temp_time=time.strptime(my_time,‘%Y-%m-%d‘)
#     temp_time=time.mktime(temp_time)
#     actual_time=temp_time+3*24*3600*num
#     new_time=time.localtime(actual_time)
#     new_time=time.strftime(‘%Y-%m-%d‘,new_time)
#     return new_time
# print(add_days(time_str,5))
例子 2 查看一个时间过去了多久
# import time
# old_time_str1=‘2015-09-10 08:30:00‘
# struct_time=time.strptime(old_time_str1,‘%Y-%m-%d %H:%M:%S‘)
# true_time=time.mktime(struct_time)
# time_now=time.time()
# dif_time=time_now-true_time-8*3600
# struct_time=time.localtime(dif_time)
# print(‘过去了%d年%d月%d天%d小时%d分钟%d秒‘%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec))
# str_time=time.strftime(‘%d %H %M %S‘,struct_time)
# print(str_time)

 

  =========================
          随机数 random() 模块
  ==========================

# print(random.random())        #  (0,1)的  float
# print(random.randint(1,5))    #  [1,5]的 int
# print(random.uniform(1,5))    #  [1,5]的 float
# print(random.randrange(1,5))  #   [1,5)的 int
# print(random.choice(‘abcd‘))  #  可迭代对象 随机选择一个
# print(random.sample(‘abcd‘,3))#  可迭代对象 随机选择多个  返回值为列表
# li=[1,2,3,4]
# random.shuffle(li)    # 随机改变  可变,可以索引的 数据结构的顺序
例子 验证码

# import random
# check=‘‘
# for i in range(8):
#     m=chr(random.choice(range(ord(‘A‘),ord(‘Z‘))))
#     n=chr(random.choice(range(ord(‘a‘),ord(‘z‘))))
#     o=random.randint(0,9)
#     string=random.choice([m,n,o])
#     check+=str(string)
# print(check)

================
      序列化模块
================

将原本的字典,列表等内容 转换为一个字符串的过程 叫做  === 序列化

存文件网络传输

=========== 序列化的目的 ===========用某种存储形式 使自定义 对象持久化将对象从一个地方传递到另一个地方程序更具有维护性 ===json== 提供了四个功能 dumps dump load loads dumps loads 网络传输 处理字符串 # import json # d={‘k‘:‘v‘,‘k2‘:[1,2,3]} # print(d,type(d)) #{‘k‘: ‘v‘, ‘k2‘: [1, 2, 3]} <class ‘dict‘> # # sd=json.dumps(d) # print(sd,type(sd)) # 序列化 {"k": "v", "k2": [1, 2, 3]} <class ‘str‘> # # # s=‘{"k":"v","k2":[1,2,3]}‘ # # d=json.loads(s) # 反序列化 # print(d,type(d)) # {‘k‘: ‘v‘, ‘k2‘: [1, 2, 3]} <class ‘dict‘> # load dump 文件操作 数据持久化 一次性的 import json d={k:v,k2:[1,2,3]} f=open(json_file,w) json.dump(d,f,ensure_ascii=True) # f.close() f=open(json_file) ret=json.load(f) f.close() print(ret) print(中国.encode(gbk)) # b‘\xd6\xd0\xb9\xfa‘ print(ascii(中国)) #‘\u4e2d\u56fd‘ unicode ===pickle===
# json (只能处理 字典 列表 元组 等基本的数据类型 ) 用于字符串 和 python数据类型间进行转换 # 所有编程语言通用 # pickle===用于自定义的 数据类型的序列化 (游戏 人物数据) # 只有python可以使用 # # 序列化一些自定义的数据类型

===shelve=== 简单的数据类型 --- 用于修改 # import shelve # # f=shelve.open(‘shelve_file‘,writeback=True) #{‘int‘: 5, ‘str‘: ‘a‘} # # f=shelve.open(‘shelve_file‘) #{‘int‘: 1, ‘str‘: ‘a‘} # f[‘key‘]={‘int‘:1,‘str‘:‘a‘} # f[‘key‘][‘int‘]=5 # f.close()#
#
f1=shelve.open(‘shelve_file‘) # 内存消耗 # ret=f1[‘key‘] # f1.close() # print(ret)

 













以上是关于常用模块二---time--random--collections--json--pickle--shelve的主要内容,如果未能解决你的问题,请参考以下文章

ansible使用笔记(二)常用命令使用及常用模块简介

二:Ansible常用模块

python常用模块二

python常用模块二

常用模块二

python:常用模块二