『Pickle』数据结构持久化模块_常用方法记录

可以把数据结构保存进文件并直接读出,

不论读取或者是保存,我们都需要借助open()函数,并且是二进制方式(‘wb’,‘rb’)

json模块可以把字典结构改写为string然后保存,并可以反向读取字典,但是即使是字典数据结构,两个包也是有差别的

json字典value不支持其他对象只支持python原有的结构,但是json由于是转换为string,所以保存的文件是可以使用文本查看器去读取的

pickle包则支持各种python的对象,但它写入的是二进制文件,并有自己独特的编码方式,所以是不可以查看的,只能使用python载入

持久化保存

#使用pickle模块将数据对象保存到文件

import pickle

data1 = {‘a‘: [1, 2.0, 3, 4+6j],
         ‘b‘: (‘string‘, u‘Unicode string‘),
         ‘c‘: None}

selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)

output = open(‘data.pkl‘, ‘wb‘)

# Pickle dictionary using protocol 0.
pickle.dump(data1, output)

# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)

output.close()

可以看到,我们能够在在一个文件中连续保存多个数据结构。

读取持久化文件

#使用pickle模块从文件中重构python对象

import pprint, pickle

pkl_file = open(‘data.pkl‘, ‘rb‘)

data1 = pickle.load(pkl_file)
pprint.pprint(data1)

data2 = pickle.load(pkl_file)
pprint.pprint(data2)

pkl_file.close()

连续读取即可。

时间: 2024-08-29 01:06:02

『Pickle』数据结构持久化模块_常用方法记录的相关文章

『Re』正则表达式模块_常用方法记录

『Re』知识工程作业_主体识别 一个比较完备的正则表达式介绍 几个基础函数 re.compile(pattern, flags=0) 将正则表达式模式编译成一个正则表达式对象,它可以用于匹配使用它的match ()和search ()等方法. 实际有两种使用方式: pattern.匹配方法(string) 或者 re.匹配方法(pattern,string) 使用或|来强化匹配规则: pattern_t = re.compile( '[0-9〇一二三四五六七八九]{4}年.{1,2}月.{1,3

『Collections』数据结构和算法_容器型value字典&顺序字典

一.collections.defaultdict:多值映射字典 defaultdict省去了初始化容器的过程,会默认value对象为指定类型的容器 指定list时可以使用.append, from collections import defaultdict d = defaultdict(list) d['a'].append(1) d defaultdict(list, {'a': [1]}) 指定set时可以使用.add, d = defaultdict(set) d['a'].add(

『TensorFlow』slim高级模块

『TensorFlow』徒手装高达_主机体框架开光版_Google自家AlexNet集成&slim高级模块学习 辅助函数 slim.arg_scope() slim.arg_scope可以定义一些函数的默认参数值,在scope内,我们重复用到这些函数时可以不用把所有参数都写一遍,注意它没有tf.variable_scope()划分图结构的功能, with slim.arg_scope([slim.conv2d, slim.fully_connected], trainable=True, act

『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下

『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 # Author : Hellcat # Time : 2018/2/11 import torch as t import torch.nn as nn import torch.nn.functional as F class LeNet(nn.Module): def __init__(self): super(LeNet,self).__init__() self.conv1 = nn.Conv2d(3, 6, 5)

『TensorFlow』函数查询列表_神经网络相关

神经网络(Neural Network) 激活函数(Activation Functions) 操作 描述 tf.nn.relu(features, name=None) 整流函数:max(features, 0) tf.nn.relu6(features, name=None) 以6为阈值的整流函数:min(max(features, 0), 6) tf.nn.elu(features, name=None) elu函数,exp(features) - 1 if < 0,否则featuresE

『PyTorch』第十弹_循环神经网络

『cs231n』作业3问题1选讲_通过代码理解RNN&图像标注训练 对于torch中的RNN相关类,有原始和原始Cell之分,其中RNN和RNNCell层的区别在于前者一次能够处理整个序列,而后者一次只处理序列中一个时间点的数据,前者封装更完备更易于使用,后者更具灵活性.实际上RNN层的一种后端实现方式就是调用RNNCell来实现的. 一.nn.RNN import torch as t from torch import nn from torch.autograd import Variab

『TensorFlow』徒手装高达_战斗数据收集模块原型_save&amp;restore

顺便一提,上节定义的网络结构有问题,现已修改,之后会陆续整理上来.两种常用(我会的)的加载方式:1. ''' 使用原网络保存的模型加载到自己重新定义的图上 可以使用python变量名加载模型,也可以使用节点名 ''' import AlexNet as Net import AlexNet_train as train import random import tensorflow as tf IMAGE_PATH = './flower_photos/daisy/5673728_71b8cb5

『Python CoolBook』数据结构和算法_字典比较&amp;字典和集合

一.字典元素排序 dict.keys(),dict.values(),dict.items() 结合max.min.sorted.zip进行排序是个很好的办法,另外注意不使用zip时,字典的lambda操作方法: price = { 'a':1, 'b':2, 'c':3 } # 多个键的值相同时会采取元组比较的形式,实际应用时注意 min_p = min(zip(price.values(), price.keys())) max_p = max(zip(price.values(), pri

『TensorFlow』徒手装高达_初号机大改_全模组升级版

全卷积网络单张不定大小图片测试代码原型(新模块): 输出原网络输出featuremap,不经任何处理(1*n*n*class) import AlexNet_FCN as Net import AlexNet_train as train import random import tensorflow as tf IMAGE_PATH = './flower_photos/daisy/5673728_71b8cb57eb.jpg' def TF_featuremap(input_size): x