Python_内置方法、序列化模块及进度条效果实现
2020-06-04 08:35
225 查看
1.常见的内置方法的作用: abs()\round()\sum()\max()\sorted()\min()\pow()\range()\bin() \oct()\hex()\chr()\ord()\eval()\exec()\repr()\input()\hash() # round(),四舍五入,奇进偶不进,注意有两位小数的情况 # 如何使用sorted找出最大值和最小值,sorted(iterable,key=函数),max及min用法同sorted # pow()出现第三个参数的作用是什么? # 谨慎使用eval、exec的原因 # hash的两个用法:1.密码加密 2.文件校验 strvar1 = "abcdef" strvar2 = "abcdef" print(hash(strvar1)) print(hash(strvar2)) with open("ceshi1.txt",mode='r',encoding='utf-8') as fp: strvar = fp.read() res1 = hash(strvar) with open("ceshi2.txt",mode='r',encoding='utf-8') as fp: strvar = fp.read() res2 = hash(strvar) print(res1,res2)
2.序列化模块_pickle的用法(数据类型-->字节流) 2.1 什么是序列化?反序列化? 说白了就是翻译吧。文件中存储的数据要么是字符串,要么是字节流,你给它别的它也不懂。 2.2 python中,是通过什么方法来进行所有数据类型的序列化和反序列化的呢? 导入pickle,然后用dumps()---bytes---loads(),这哥俩很强,可以转化任意对象,列表、迭代器、函数什么的爱谁谁。 2.3 dump() 、load(),如果要跟文件打交道,尽量使用dump和load dic = {"a":1,"b":2} with open("ceshi3.txt",mode='wb') as fp: # dump(要转换的对象,文件对象),把对象序列化后写入文件对象 pickle.dump(dic,fp) with open("ceshi3.txt",mode='rb') as fp: res = pickle.load(fp) # 把文件对象里的内容拿出来,反序列化成原来数据 print(res,type(res)) 2.4 dumps() vs dump() # dumps需要先将对象转为字节流,再去执行写入操作,dump直接就是跟文件对象打交道了,比dumps更简便一些 dic = {"a":1,"b":2} str_bytes = pickle.dumps(dic) print(str_bytes) with open("ceshi4.txt",mode="wb") as fp: fp.write(str_bytes) # 通过loads来取出 with open("ceshi4.txt",mode="rb") as fp: str_bytes = fp.read() dic = pickle.loads(str_bytes) print(dic,type(dic))
3.json模块的使用(数据类型-->字符串) 所有的编程语言都能识别的数据格式叫做json,是字符串 3.1 能够通过json序列化成字符串的有如下类型:8种 int\float\bool\str\list\tuple\dict\None 4.json的用法 4.1 dumps 和 loads,序列化成字符串 dic = {"name":"王","age":30,"classroom":"python30","family":["baba","mma","bro","sis"]} # ensure_ascii 和 sort_keys的效果是什么 res = json.dumps(dic,ensure_ascii=False,sort_keys=True) print(res) # loads反序列化成原来的数据类型 dic = json.loads(res) print(dic,type(dic)) 4.2 dump 和 load,针对于文件,把数据进行序列化操作 dic = {"name":"王","age":30,"classroom":"python30","family":["baba","mma","bro","sis"]} with open("ceshi5.json",mode="w",encoding="utf-8") as fp: # dump(要转换的数据,文件对象) json.dump(dic,fp,ensure_ascii=False) # load反序列化成原来的数据类型 with open("ceshi5.json",mode="r",encoding="utf-8") as fp: dic = json.load(fp) print(dic, type(dic))
5.json 和 pickle 两个模块的区别 (1)json序列化之后的数据类型是str,所有编程语言都识别,(数据交流) 但是仅限于(int float bool)(str list tuple dict None) json不能连续load,只能一次性拿出所有数据 (2)pickle序列化之后的数据类型是bytes, (存储转换) 所有数据类型都可转化,但仅限于python之间的存储传输. pickle可以连续load,多套数据放到同一个文件中 dic1 = {"a":1,"b":2} dic2 = {"c":3,"d":4} with open("ceshi6.json",mode="w",encoding="utf-8") as fp: json.dump(dic1,fp) fp.write("\n") json.dump(dic2,fp) fp.write("\n") # with open("ceshi6.json",mode="r",encoding="utf-8") as fp: #dic = json.load(fp) #print(dic) with open("ceshi6.json",mode="r",encoding="utf-8") as fp: #文件对象是迭代器,一次迭代一行 for i in fp: dic = json.loads(i) print(dic) # pickle import pickle dic1 = {"a":1,"b":2} dic2 = {"c":3,"d":4} with open("ceshi7.pkl",mode="wb") as fp: pickle.dump(dic1,fp) pickle.dump(dic2,fp) # 方法一 with open("ceshi7.pkl",mode="rb") as fp: dic = pickle.load(fp) print(dic) dic = pickle.load(fp) print(dic) # 方法二 try: with open("ceshi7.pkl",mode="rb") as fp: while True: dic = pickle.load(fp) print(dic) except: pass
6.time模块,睡眠等待 def progress(percent): if percent > 1: percent = 1 # 打印出对应的# 号效果 strvar = int(50 * percent) * "#" # %% => %号的符号效果 print("\r[%-50s] %d%%" % (strvar , int(100 * percent)) ,end="") recv_size = 0 # 假设文件总大小是 1028000 total_size = 1028000 while recv_size < total_size: time.sleep(0.01) # 一次接受的字节数是1024 recv_size += 1024 percent = recv_size/total_size progress(percent)
相关文章推荐
- python利用字典保存配置实现动态调用模块类方法
- python使用smtplib模块通过gmail实现邮件发送的方法
- Python内置方法实现字符串的秘钥加解密(推荐)
- Python实现根据指定端口探测服务器/模块部署的方法
- Python实现屏幕输出进度条的方法
- Python3内置模块之base64编解码方法小结
- python使用fileinput模块实现逐行读取文件的方法
- 微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——上篇
- Python基于csv模块实现读取与写入csv数据的方法
- Python bisect模块的使用方法及源码实现
- Python 入门之 内置模块 -- 序列化模块(json模块、pickle模块)
- Python内置random模块生成随机数的方法
- 微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——上篇
- Python 实现PHP内置MD5函数方法
- python使用PIL模块实现给图片打水印的方法
- python中动态加载模块和类方法实现
- python实现简单的进度条的方法
- Python在不同目录下导入模块的实现方法
- Python实现屏幕输出进度条的方法
- 通过Python模块filecmp 对文件比较的实现方法