import json
# l = {'1':1,'2':2}
# print(json.dumps(l)) #将字典转化成字符串
# l = '{"1":2}'
# print(json.loads(l)) #将字符串转化成字典
# json.dump(l,open('a',encoding='utf-8',mode='w')) #dump将字典转化成字符串并写入文件
# l1 = json.load(open('a',encoding='utf-8',mode='r')) #load,将字符串转化成字典并读取出来
# l['1'] +=1
# json.dump(l,open('a',encoding='utf-8',mode='w'))
# print(l)
# json 模块下
# json.load() #参数文件句柄(r), 将文件中字符串转换成字典 持久化功能
# json.dump() #对象(字典),文件句柄(w) 将字典转换字符串写入到文件中 持久化功能
# json.dumps() #对象(字典) 将字典转换成字符串
# json.loads() #字符串(字典) 将字符串转换成字典
import pickle #pickle是python特有的模块
# l = {'1':1,'2':2}
# print(pickle.dumps(l))
# 在pickle模式下将字典转换成一串类似于二进制的编码
#b'x80x03}qx00(Xx01x00x00x001qx01Kx01Xx01x00x00x002qx02Kx02u.'
# print(pickle.loads(b'x80x03}qx00(Xx01x00x00x001qx01Kx01Xx01x00x00x002qx02Kx02u.'))
#将一串类似于二进制的编码转换成字典
# l1 = pickle.dump(l,open('a',mode='wb'))
# print(l1)
#将字典的内容转换成一段类似于二进制的编码并写入文件内
# l2 = pickle.load(open('a',mode = 'rb'))
# print(l2)
#将一串类似于二进制的编码转换成字典,并读取出来
# pickle模式下:
# dumps #将字典转换成一串类似于二进制的编码
# loads #将一串类似于二进制的编码转换成字典
# dump 持久化 #将字典的内容转换成一段类似于二进制的编码并写入文件内
# load 持久化 #一串类似于二进制的编码转换成字典,并读取出来
import shelve
# f = shelve.open('c',writeback= True) #创建一个文件, writeback = True
# f['name'] = '大白'
# f['age'] = 22 #写入内容,会自动帮忙写入创建的文件夹
# print(f['name'],f['age']) #大白 22
# f['name'] = '小白'
# print(f['name'],f['age']) #小白 22 #相同键,再次写入不同值,会把原来的覆盖掉
import random
#用到的方法: random,uniform,randint,randrange,choice,choices,sample,shuffle
# print(random.random()) #获取的是0~1之间的随机小数
# print(random.uniform(1,4)) #获取的是提供的两个数之间的任意一个小数
# print(random.randint(5,10)) #获取的是提供的两个数之间的任意一个数字,包括这俩个数
# print(random.randrange(1,7)) #获取的是提供的两个数之间的任意一个数字,但不包括后面的数
# print(random.randrange(1,7,2)) #获取的是提供的两个数之间的任意一个奇数,但不包括后面的数
# l = ['大白','小白','alex']
# print(random.choice(l)) #随机获取一个列表内的元素
# l = ['大白','小白','alex']
# print(random.choices(l,k = 2)) #随机获取两个列表内的元素,想随机获取几个元素就给k赋值几,但内容有重复
# l = ['大白','小白','alex']
# print(random.sample(l,k=2)) #随机获取两个列表内的元素,想随机获取几个元素就给k赋值几,且内容无重复
# l = [1,22,'32',4]
# random.shuffle(l) #对列表内元素进行随机排序
# print(l)
import os #os,模块和当前电脑的操作系统做交互
#操作方法
#路径部分
# os.path.join('c:\','a','b')
#路径的拼接,软件开发规范,框架中会用到
# os.path.abspath('a')
#获取当前文件的绝对路径
# os.path.basename(r'D:PyCharmProjectday14 模块a')
#获取这个文件的名字
# os.path.dirname(r'D:PyCharmProjectday14 模块a')
#获取的是这个文件的目录路径
# os.path.getsize()
#获取文件的大小
# os.chdir()
# 切换目录
# 文件部分
# os.remove()
#删除这个文件,删除了就不能恢复了
# os.rename()
#修改文件的名字
# 文件夹部分
# os.listdir()
#查看某个文件夹下的内容
# os.mkdir()
# 创建单个文件夹
# os.rmdir()
# 删除单个文件夹
# os.makedirs('app/a/b')
# 递归创建文件夹
# os.removedirs('app/a/b')
# 递归删除
import sys # sys与 python解释器交互
# sys.argv() 在cmd中执行 可以将文件 后的内容传递到文件中使用
# sys.path python解释器加载的路径,自定义模块添加到这里 ******
# sys.exit()
# sys.version() 获取解释器的版本号
# sys.platform 获取当前平台的位数
import hashlib
# hashlib 加密算法
# md5,sha1,sha256,sha512
# 1.先导入模块
# 2.创建一个加密方式
# 3.将要加密的内容编码成字节后加密
# 4.生成密文
# ep:
# import hashlib
# md5 = hashlib.md5(b'alex')
# md5.update('alex3714'.encode('utf-8'))
# print(md5.hexdigest())