将array或者json文件转化为pkl文件保存

 
 
        对于我们熟知的 pkl 文件,它具体优势以及适用范围是什么却不太明白,以前我们在读取文件的时候一般都用with open('xxx', 'r') as file:,其中r是用来打开文本类型文件,若要打开的是二进制类型文件,那就改为rb。因为文件主要分为 文本类型二进制类型pkl 文件则是二进制文件,其最主要的优势在于读取文件速度比其他例如json等格式快,通过import pickle来生成 pkl 文件;但pickle的协议特定于Python,因此不保证跨语言兼容性。

 


1. 将array转化为pkl文件

import numpy as np
import pickle

A = np.random.randn(2, 2)
with open('test', 'wb') as f:               #write
   pickle.dump(A, f)
   f.close()

with open('test', 'rb') as f:
   A = pickle.load(f, encoding='bytes')    #read
   f.close()
   print(A)

 


2. 将多个json文件转化为pkl文件

import pickle
import json

root = '/home/raywit/PycharmProjects/'

with open(root + 'training_xyz.json', 'r') as f:
   a = np.array(json.load(f))
with open(root + 'k.json', 'r') as f:
   fx = np.array(json.load(f))
with open(root + 'k1.json', 'r') as f:
   fy = np.array(json.load(f))
with open(root + 'training_verts.json', 'r') as f:
   gt = np.array(json.load(f))

list_data = {'training_xyz': a, 
            'k': fx, 
            'k1': fy, 
            'training_verts': gt}
with open("list_data", "wb") as fo:         #write
   pickle.dump(list_data, fo)
   fo.close()

with open("list_data", "rb") as fo:         #read
   A = pickle.load(fo, encoding='bytes')
   print(A['k'].shape)

注意: 上面则是先将json文件内容读取出来(我所用的json文件保存的是array,结构不复杂),再将内容转化为dict格式存到pkl中。

你可能感兴趣的:(python)