coolections模块:
from coolections import namdtuple #创建一个有序字典 dic = collections.OrderedDict() dic['name'] = 'winter' dic['age'] = 18 dic['gender'] = 'male' print(dic) #结果OrderedDict([('name', 'winter'), ('age', 18), ('gender', 'male')]) #将一个键值对放入最后 dic.move_to_end('name') print(dic) #结果OrderedDict([('age', 18), ('gender', 'male'), ('name', 'winter')]) from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) # 定义命名元组 p = Point(10, y=20) # 创建一个对象 p Point(x=10, y=20) p.x + p.y 30 p[0] + p[1] # 像普通元组那样访问元素 30 x, y = p # 元组拆封 x 10 y 20 """ namedtuple : 可命名元组,通过名字来访问元组元素 命名元组有助于对元组每个元素赋予意义,这样就可以通过名字来访问元组里的元素,
增强了可读性;尤其对于坐标,html标签的长宽等,使用名字可读性更强;有点类似
于字典了并且让我们的代码有更好的可读性和自文档性。你可以在任何使用元组地方使用命名元组。 """
# 双端队列: """ python 中,队列是线程间最常用的交换数据的形式。queue模块是提供队列操作的模块,
虽然简单易用,但是不小心的话,还是会出现一些意外。queue模块其实是对数据结构中
栈和队列这种数据结构的封装,把抽象的数据结构封装成类的属性和方法 """ import queue q = queue.Queue(3) # 调用构造函数,初始化一个大小为3的队列 print(q.empty()) # 判断队列是否为空,也就是队列中是否有数据 # 入队,在队列尾增加数据, block参数,可以是True和False 意思是如果队列已经满了则阻塞在这里, # timeout 参数 是指超时时间,如果被阻塞了那最多阻塞的时间,如果时间超过了则报错。 q.put(13, block=True, timeout=5) print(q.full()) # 判断队列是否满了,这里我们队列初始化的大小为3 print(q.qsize()) # 获取队列当前数据的个数 # block参数的功能是 如果这个队列为空则阻塞, # timeout和上面一样,如果阻塞超过了这个时间就报错,如果想一只等待这就传递None print(q.get(block=True, timeout=None))
时间模块:
""" time 三种表现形式 1.时间戳 时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 2.格式化时间 已格式化的结构使时间更具可读(用来展示给人看的) 3.结构化时间 时间元组,共有九个元素组。 """ import time print(time.time()) # 查看时间戳 print(time.strftime('%Y-%m-%d %H:%M:%S')) # 查看当前时间 print(time.localtime()) print(time.localtime(time.time())) print(time.strftime('%Y-%m',time.localtime())) print(time.strptime(time.strftime('%Y-%m',time.localtime()),'%Y-%m')) # 输出结果为: 1563456596.4537 2019-07-18 21:29:56 time.struct_time(tm_year=2019, tm_mon=7, tm_mday=18, tm_hour=21, tm_min=29, tm_sec=56, tm_wday=3, tm_yday=199, tm_isdst=0) time.struct_time(tm_year=2019, tm_mon=7, tm_mday=18, tm_hour=21, tm_min=29, tm_sec=56, tm_wday=3, tm_yday=199, tm_isdst=0) 2019-07 time.struct_time(tm_year=2019, tm_mon=7, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=182, tm_isdst=-1) # time.sleep() 推迟程序执行秒数 import time print "Start : %s" % time.ctime() time.sleep(5) # 推迟五秒执行 print "End : %s" % time.ctime() """ python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身 """
random模块:
也叫随机模块,用于生成随机数。
# random.randint(a,b) 用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,
生成的随机数n: a <= n <= b
import random
print(random.randint(1,10)) # 随机生成1-9
# random.uniform(a,b) 用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,
一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。
import random
print(random.uniform(1,10))
print(random.uniform(10,1))
os模块:
"""
os.getcwd()模块函数
功能:获取当前工作目录,即当前python脚本工作的目录路径【无参】
使用方法:os.getcwd()
格式如:a = os.getcwd()
"""
import os
a = os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径【无参】
print(a)
#输出
#H:\py
"""
os.chdir()模块函数
功能:改变当前脚本工作目录;相当于shell下cd【有参】
使用方法:os.chdir("字符串格式要更改的路径")
格式如:os.chdir("D:")
"""
import os
retval = os.getcwd() # 查看当前工作目录
print("当前工作目录为 %s" % retval)
os.chdir("D:") # 修改当前工作目录
retval = os.getcwd() # 查看修改后的工作目录
print("目录修改成功 %s" % retval)
#输出
# 当前工作目录为 H:\py
# 目录修改成功 D:\
sys模块:
sys块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它始终可用。
import sys
sys.path.append() # 将某个路径添加到系统的环境变量中
print(sys.platform)
print(sys.version) # python解释器的版本
print(sys.argv) # 命令行启动文件 可以做身份的验证
if len(sys.argv) <= 1:
print('请输入用户名和密码')
else:
username = sys.argv[1]
password = sys.argv[2]
if username == 'jason' and password == '123':
print('欢迎使用')
# 当前这个py文件逻辑代码
else:
print('用户不存在 无法执行当前文件')
序列化模块:
json模块和pickle模块
"""
json提供四个功能:json.loads json.dumps json.load json.dump。loads跟dumps是用来处理字符串的,load跟dump是用来处理文件的。
loads:把json转换成其他格式,字符串或文件相关的
dumps:把其他对象或格式转换为json格式
load:将文件的内容转换成为json数据
dump:把json数据写入到文件中
"""
# 1.把dict格式转换为json字符串格式
import json
a = dict(name='huangdongju', age=25,message='something')
print (a)
print (type(a))
b = json.dumps(a)
print (b)
print (type(b))
# 结果:
{'name': 'huangdongju', 'age': 25, 'message': 'something'}
<class 'dict'>
{"name": "huangdongju", "age": 25, "message": "something"}
<class 'str'>
# 2.把json格式转换成为dict
d = {"name":"jason"}
print(d)
res = json.dumps(d)
print(res,type(res))
res1 = json.loads(res)
print(res1,type(res1))
# 结果:
{'name': 'jason'}
{"name": "jason"} <class 'str'>
{'name': 'jason'} <class 'dict'>
# 3.把json写入文件中
jsondata = '''{"a":1,"b":2,"c":3}'''
with open('a.txt','w') as f:
json.dump(jsondata,f)
# 结果
"{\"a\":1,\"b\":2,\"c\":3}"
# 4.从文件中读取内容转换成json格式
with open('a.txt','r') as fr:
m = json.load(fr)
print (m)
print (type(m))
# 结果
{"a":1,"b":2,"c":3}
<class 'str'>
# pickle模块 跟jason模块用法一样,但是它只能在python里面使用
import pickle
d = {'name':'jason'}
res = pickle.dumps(d) # 将对象直接转成二进制
print(pickle.dumps(d))
res1 = pickle.loads(res)
print(res1,type(res1))
with open('userinfo_1','wb') as f:
pickle.dump(d,f)
with open('userinfo_1','rb') as f:
res = pickle.load(f)
print(res,type(res))
"""
序列化
序列:字符串
序列化:其他数据类型转换成字符串的过程
写入文件的数据必须是字符串
基于网络传输的数据必须是二进制
序列化:其他数据类型转成字符串的过程
反序列化:字符串转成其他数据类型
json模块
所有的语言都支持json格式
支持的数据类型很少 字符串 列表 字典 整型 元组(转成列表) 布尔值
pickle模块
只支持python
python所有的数据类型都支持
用pickle操作文件的时候 文件的打开模式必须是b模式
"""