首页 > 其他分享 >pickle模块

pickle模块

时间:2023-06-05 09:46:20浏览次数:41  
标签:struct dic tm 模块 time 序列化 pickle

pickle模块

json & pickle 模块 (用于序列化的两个模块)

  • json
    • 用于字符串 和 python数据类型间进行转换
  • pickle
    • 用于python特有的类型 和 python的数据类型间进行转换
  • pickle模块提供了四个功能:
    • dumps
    • dump(序列化,存)
    • loads(反序列化,读)
    • load (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化

【一】方法演示

  • dumps
import pickle

dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
str_dic = pickle.dumps(dic)
print(str_dic)  # 一串二进制内容

# b'\x80\x04\x95#\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x02k1\x94\x8c\x02v1\x94\x8c\x02k2\x94\x8c\x02v2\x94\x8c\x02k3\x94\x8c\x02v3\x94u.'

  • loads
import pickle

dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
str_dic = pickle.dumps(dic)
dic2 = pickle.loads(str_dic)
print(dic2)  # 字典

# {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
  • dump
import pickle
import time

struct_time = time.localtime(1000000000)
print(struct_time)
# time.struct_time(tm_year=2001, tm_mon=9, tm_mday=9, tm_hour=9, tm_min=46, tm_sec=40, tm_wday=6, tm_yday=252, tm_isdst=0)
f = open('pickle_file', 'wb')
pickle.dump(struct_time, f)
f.close()
  • load
import pickle
import time

struct_time = time.localtime(1000000000)
print(struct_time)
# time.struct_time(tm_year=2001, tm_mon=9, tm_mday=9, tm_hour=9, tm_min=46, tm_sec=40, tm_wday=6, tm_yday=252, tm_isdst=0)

f = open('pickle_file', 'rb')
struct_time2 = pickle.load(f)
print(struct_time2.tm_year)

【二】优点

  • 这时候机智的你又要说了,既然pickle如此强大,为什么还要学json呢?
  • 这里我们要说明一下
    • json是一种所有的语言都可以识别的数据结构。
  • 如果我们将一个字典或者序列化成了一个json存在文件里
    • 那么java代码或者js代码也可以拿来用。
  • 但是如果我们用pickle进行序列化
    • 其他语言就不能读懂这是什么了~
  • 所以,如果你序列化的内容是列表或者字典,我们非常推荐你使用json模块
  • 如果出于某种原因你不得不序列化其他的数据类型,而未来你还会用python对这个数据进行反序列化的话,那么就可以使用pickle

标签:struct,dic,tm,模块,time,序列化,pickle
From: https://www.cnblogs.com/dream-ze/p/17457035.html

相关文章

  • 序列化模块JSON
    序列化模块什么叫序列化——将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。【一】为什么要有序列化模块比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里然后另一个python程序再从文件里......
  • random模块生成六位随机数字+大小写验证码
    random模块生成六位随机数字+大小写验证码【一】代码importrandom'''生成六位随机(数字+大小写)验证码'''defget_verify_code(n):code=''foriinrange(n):random_int=str(random.randint(0,9))#0-9之间的整数random_upper......
  • hashlib模块
    hashlib模块【一】算法介绍Python的hashlib提供了常见的摘要算法如MD5SHA1等等。什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。摘要算法就是通过摘要函数f()对任意长......
  • 补充:通过Python中的subprocess模块实现安装pip模块
    通过Python代码实现安装pip模块或更新可以使用Python的内置模块subprocess来实现安装pip模块,具体步骤如下:【一】导入subprocess模块。importsubprocess【二】执行安装命令。subprocess.call(['python','-m','ensurepip','--upgrade'])在上面的代码中,调用subproce......
  • OverTheWire攻关过程-Bandit模块31
    我们打开lv30-lv31,查看信息机器翻译有一个git仓库在ssh://bandit30-git@localhost/home/bandit30-git/repo经由端口2220。用户bandit30-git的密码与用户bandit30的密码相同。克隆存储库并找到下一级别的密码。您可能需要解决此级别的命令git的一样的使用git命令我们登陆服务器查......
  • requests模块 编码和wireshark测试
    结合wireshark进行测试、分析1、编码问题1.1url路径url路径中包含敏感字符,不会被url编码的字符包括:'=;,!*-会被url编码的字符包括:"<>\\非ascii字符会先进行utf-8编码,再进行url编码。比如字符'时'编码为%E6%97%B61.2直接参数和url具有基本一致的编码和非编码字符,新增......
  • requests模块
    1、介绍requests是python用于处理http/https的一个第三方库,需要pip安装。注意避免安装request模块,这是一个恶意黑客仿照requests定制的模块Pythonrequests模块|菜鸟教程(runoob.com)Requests:HTTPforHumans™—Requests2.31.0documentation2、request函数def......
  • 案例补充:random模块模拟随机验证码登陆验证
    案例补充:random模块模拟随机验证码登陆验证***用到的知识点【一】random模块产生随机数字(1)产生0-9之间的随机整数importrandomrandom_int=str(random.randint(0,9))(2)产生A-Z之间的字母importrandomrandom_upper=chr(random.randint(65,90))(3)产生a-z之间的字......
  • Python可视化模块
    Python可视化模块一个简单的python包就能够实现数据的可视化功能,这个第三方动态可视化的数据模块就是Pynimate效果是这样的安装pipinstallpynimate使用指南想要使用Pynimate,直接import一下就行importpynimateasnim输入数据后,Pynimate将使用函数Barplot()......
  • vscode 找不到模块“./App.vue”或其相应的类型声明。
    问题编辑器:VisualStudioCode项目类型:Vite+Vue+TS目标位置:main.ts项目运行:不受影响,正常运行,但是就是不爽解决在VisualStudioCode中安装TypeScriptVuePlugin(Volar)插件......