day19

random: 随机数

'''
import random
random.random(0,1) :这个一直有一个争论,包含0或者不包含0的争论
random.randint[1,10]
random.uniform()
random.choice(item) 单列集合随机选择1个
random.sample(item,n) 单列集合随机选择n个
random.shuffle(item) 随机打乱单列集合
'''

序列化与反序列化:json | pickle | shelve

'''
json:json是一种有语法规范的字符串,用来存方数据的,完成各种语言之间的数据交互.使用josn序列化到文件,必须只有一个根,不然无法反     序列化,这个语言的数据类型相关

json数据支持的数据类型:dict(字典) list(列表) int(整型) 浮点(float) str(字符串) null(空,python中写None)

json字符串就是{存放双列信息}和[存放单列信息]的组合,且{}的key必须是str(字符串),并且要用" "包裹

注:除以上的类型以外,其他类型都不能出现,出现就不满足json格式,就不能序列化.真是个傲娇的语言

pickle:可以存各种数据类型
shelve:流

dump():将对象直接序列化成字符串  
dumps():将对象序列化成字符串存储到文件中 json模块的此方法要注意ensure_ascii
loads() :将字符串转换为对象     默认跟当前文件被解释器执行的编码走
load():将文件中的字符串转换成对象

shelve对序列化文件操作dump与load进行封装
注:writeback允许序列化的可变类型(比如列表),可以直接修改值
一次文件流:open()和close(),在一次文件流里,他会存最后一个valuse的值
'''

加密:hashlib hmac

'''
不可逆加密:没有解密的加密的方式, 比如md5
解密方式:碰撞解密
加密的对象:用于传输的数据是字符串类型的数据
import hashlib
获取加密对象:lock = hashlib.md5()
添加加密数据:

加盐加密: 1.保证原数据过于简单,通过复杂的盐也可以提高解密难度
        2.即使被碰撞解密成功,也不能直接识别盐与有效数据
       
import hashlib        
lock_obj = hashlib.md5()
lock_obj.update(b'goodgoodstudy')
lock_obj.update(b'123')
lock_obj.update(b'daydayup')
res = lock_obj.hexdigest()
print(res)



import hmac
# hmac.new(arg) # 必须提供一个参数
cipher = hmac.new('加密的数据'.encode('utf-8'))
print(cipher.hexdigest())

cipher = hmac.new('前盐'.encode('utf-8'))
cipher.update('加密的数据'.encode('utf-8'))
print(cipher.hexdigest())

cipher = hmac.new('加密的数据'.encode('utf-8'))
cipher.update('后盐'.encode('utf-8'))
print(cipher.hexdigest())

cipher = hmac.new('前盐'.encode('utf-8'))
cipher.update('加密的数据'.encode('utf-8'))
cipher.update('后盐'.encode('utf-8'))
print(cipher.hexdigest())
'''

shutil

# 基于路径的文件复制:
shutil.copyfile('source_file', 'target_file')

# 基于流的文件复制:
with open('source_file', 'rb') as r, open('target_file', 'wb') as w:
   shutil.copyfileobj(r, w)
   
# 递归删除目标目录
shutil.rmtree('target_folder')

# 文件移动
shutil.move('old_file', 'new_file')

# 文件夹压缩
# file_name:被压缩后形成的文件名 format:压缩的格式 archive_path:要被压缩的文件夹路径
shutil.make_archive('file_name', 'format', 'archive_path')

# 文件夹解压
# unpack_file:被解压文件 unpack_name:解压后的名字 format解压格式
shutil.unpack_archive('unpack_file', 'unpack_name', 'format')
原文地址:https://www.cnblogs.com/zhuqihui/p/10834996.html