在python程序当中,如果需要涉及到读取体积较大文件或者涉及较为复杂的变量处理的时候,在变量的处理或者序列化的阶段可能非常耗费时间,基于此我们可以提前将变量保存起来形成文件的格式。与原来的读取文本文件的方式不同,变量保存的文件读取之后直接就是包含数据结构与对象类型的变量,并且读取速度也会相应的快很多。

python为不同的情况提供了多种变量的保存方式,有些库自己也提供某些变量的保存方式。以下展示几种python保存变量的方式。

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pickle

# 存储变量的文件的名字
filename = 'shoplist.data'
# 初始化变量
shoplist = ['apple', 'mango', 'carrot']
# 以二进制写模式打开目标文件
f = open(filename, 'wb')
# 将变量存储到目标文件中区
pickle.dump(shoplist, f)
# 关闭文件
f.close()
# 删除变量
del shoplist
# 以二进制读模式打开目标文件
f = open(filename, 'rb')
# 将文件中的变量加载到当前工作区
storedlist = pickle.load(f)
print(storedlist)

方法二:

1
2
3
4
5
6
7
8
#当然如果你安了sklearn,保存东西会简单一点。

from sklearn.externals import joblib
# 保存x
joblib.dump(x, 'x.pkl')
# 加载x
x = joblib.load('x.pkl')
对于dataframe数据类型,也有自己的保存方法。

方法三:

1
2
3
4
5
6
7
8
9
10

import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(20).reshape(4, 5))
print('写入数据\n',df)
# 使用DataFrame的to_pickle属性就可以生成pickle文件对数据进行永久储存
df.to_pickle('foo.pkl')
# 使用pandas库的pd.read_pickle读取pickle数据
dr = pd.read_pickle('foo.pkl')
print('读取数据\n', dr)

方法四:

numpy保存文件

二进制文件

  • 只保存数据不保存形状和元素类型a.tofile('a.bin)
  • 读入时需要指定元素类型b=np.fromfile('a.bin’,dtype=np.int32)

npy文件

  • 保存:np.save('a.npy',a)
  • 读取:c=np.load('a.npy')

txt和csv等文件

  • 保存:np.savetxt('a.txt' ,a,fmt='%d')
  • 读取:np.loadtxt('a.txt',dtype='int')

注意:并不是所有的变量都能够保存并且落盘,某些变量不能够进行序列化或者本身只包含索引,因此会导致保存失败