博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python day19
阅读量:7112 次
发布时间:2019-06-28

本文共 2592 字,大约阅读时间需要 8 分钟。

常用模块(二)

random模块:随机数

1、random.random()  #随机取(0,1)之间的小数(开区间)

2、random.randint(1,10)  #随机取[1,10]之间的整数(闭区间)

3、random.randrange(1,10)  #随机取[1,10)之间的整数(左闭右开)

4、random.unifrom(1,10)  #随机取(1,10)之间的小数(开区间)

5、random.choice(item)  #单列集合随机选1个

6、random.sample(item,n)  #单列集合随机选n个

7、random.shuffle(item)  #洗牌单列集合

json模块:序列化

  --json格式是统一的,主要用来传输数据,所以json有自己支持的格式(字符串格式),都是{}与[]嵌套的数据,如果是单数据也可以

  --{}相当于字典,[]相当于列表,字符串必须用双引号,null相当于None,布尔值会转成小写,json中字典的key必须是字符串

序列化:dump  |  dumps  对象 ==>字符串

  json.dumps(obj)  #可以把对象序列化成字符串

  json.dump(obj,file)  #可以把对象序列化成字符串并写到文件中

反序列化:load  |  loads  字符串 ==>对象

  json.loads(json_str)  #可以把json格式的字符串转换成对象

  json.load(file)  #可以把文件里存的json格式的字符串转换成对象

pickle模块:序列化

  --主要用于存文件,因为他基本什么格式都支持,使用的编码不是utf-8,所以不能用utf-8来解码

序列化:dump  |  dumps  对象转换成二进制字符串

  pickle.dumps(obj)  #可以把对象转换成二进制字符串

  pickle.dump(obj,write_byte_file)  #可以把对象以二进制字符串存到文件中

反序列化:load  |  loads  #可以把二进制字符串转换成对象

  pickle.loads(bytes_str)  #可以把二进制字符串转换成对象

  pickle.load(read_byte_file)  #可以把文件中的二进制字符串读出来转换成对象

shelve模块:可以用字典存取数据到文件的序列化模块

序列化:存

s_dic = shelve.open('target_file',writeback = True)  

  #可以创建出可以用字典存取数据的文件,writeback = True允许序列化的可变类型,

  #如果存入可变类型,可以提取出来append()新的值进去

  #不可变类型也可以提取出来重新赋值

  #打开一次文件结束后必须关闭close

s_dic['key'] = 'value'  #这就把value和对应的key一起存入文件中了

反序列化:取

print(s_dic['key'])  #就可以把key对应的value取出来

s_dic.close()  #释放文件

shutil模块:可以操作权限的处理文件模块(功能比较强大)

#基于路径的文件复制

shutil.copyfile( 'source_file' , 'target_file' )

#基于流的文件复制

with open('source_file','rb') as rf,open('target_file','wb') as wf:

  shutil.copyfileobj(rf,wf)

#递归删除目标目录

shutil.rmtree(folder)

#文件移动

shutil.move('old_path','new_path')

#文件压缩

shutil.make_archive('file_name','format','archive_path')

  --file_name:压缩完文件路径  format:压缩格式  archive_path:原文件路径

#文件解压

shutil.unpack_archive('unpack_file','unpack_name','format')

  --unpack_file:原压缩文件  unpack_name:解压完的文件名  format:解压格式

hashlib模块:加密    

  --基本都是单向加密,把加密完的数据存到数据库中,用户再次提供数据时就和这个进行比较

cipher = hashlib.md5('需要加密的数据'.encode('utf-8'))

  #对于md5来说,定义加密文件的括号里可以写数据也可以不写,写的数据必须是二进制数据

  #一次定义完之后可以后续update添加数据,原数据还在,只有重新定义才会没有之前的数据

res = cipher.hexdigest()  #获得加密完的结果

cipher.update('二进制数据')

print(res)

# 加盐 :通常是在数据的开始和结尾加盐  --也就是加上一些只有自己知道的特殊符号转换的二进制

  --1、可以使原来简单的数据变得复杂,不容易碰撞解密成功

  --2、如果被碰撞解密成功,前后加了一些自己的数据,也可以使别人想要获得原数据难度加大

cipher = hashlib.md5()

cipher.update('前盐'.encode('utf-8'))

cipher.update('原数据'.encode('utf-8'))

cipher.update('后盐'.encode('utf-8'))

print(cipher.hexdigest())  #查看最后加密结果

hmac模块:加密

cipher = hmac.new('数据'.encode('utf-8'))  #定义的时候在括号里必须写数据或者盐

cipher.update('数据或者盐'.encode('utf-8'))

print(cipher.hexdigest())    #查看加密结果

转载于:https://www.cnblogs.com/hesujian/p/10834789.html

你可能感兴趣的文章
AdTime: DMC量身定制的企业数据分析师
查看>>
《数字逻辑设计与计算机组成》一2.3 规范表达式
查看>>
借道大数据 互联网基金再探“蓝海”
查看>>
浙江医疗综合体获批 医疗资源也可共享
查看>>
3G/4G调制解调器曝漏洞:可致设备被完全控制
查看>>
你知道你的Mac摄像头正在偷窥你吗?这款工具或许能帮你
查看>>
超干货!一套完整的设计分析思路应该是怎样的?
查看>>
关于视频流的各种问题,后续整理
查看>>
从零开始,我的上云路
查看>>
【Spark Summit East 2017】R与Spark:如何使用RStudio的 Sparklyr和H2O的 Rsparkling分析数据...
查看>>
FIS源码-fis release概览
查看>>
鹰眼跟踪、EDAS燎原, 看高性能服务框架EDAS的架构实践
查看>>
使用LogHub进行日志实时采集
查看>>
使用jackson-mapper-lgpl序列化和反序列化
查看>>
Windows环境下在Oracle VM VirtualBOX下克隆虚拟机镜像(克隆和导入)
查看>>
iOS开发之使程序在后台运行
查看>>
MySQL修改密码和加密
查看>>
批处理文件之间的相互调用问题
查看>>
Servlet的Listener的使用
查看>>
Handler学习小结
查看>>