python保存列表
(1)保存为.npy
文件:
先将列表转为np.array
,再进行保存
import numpy as np
graphTable = [
[[0,3],[1,3],1,'1'], #A-B
[[1,3],[2,3],1,'2'], #B-C
[[2,3],[2,1],2,'3'], #C-H
[[1,3],[1,2],1,'4'], #B-D
[[1,2],[1,1],1,'5'], #D-F
[[1,2],[0,0],3,'6'], #D-S
[[1,1],[2,1],1,'7'], #F-H
[[1,1],[3,1],4,'8'], #F-I
[[2,1],[3,1],1,'9'], #H-I
[[3,3],[3,1],2,'10'] #G-I
]
m=np.array(graphTable)
np.save('demo.npy',m)
从.npy文件中读出np.array,再转为list格式
a=np.load('demo.npy')
graphTable=a.tolist()
注意:在numpy1.16后np.load()中的allow_pickle默认为False,所以load时需要加上参数allow_pickle=True
numpy中:
(1) load() 和 save() 函数是读写文件数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npy 的文件中;
(2)savez() 函数用于将多个数组写入文件,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npz 的文件中;
(3)loadtxt() 和 savetxt() 函数处理正常的文本文件(.txt 等)
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
- file:要保存的文件,扩展名为 .npy,如果文件路径末尾没有扩展名 .npy,该扩展名会被自动加上。
- arr: 要保存的数组
- allow_pickle: 可选,布尔值,允许使用 Python pickles 保存对象数组,Python 中的 pickle用于在保存到磁盘文件或从磁盘文件读取之前,对对象进行序列化和反序列化。
- fix_imports: 可选,为了方便 Pyhton2 中读取 Python3 保存的数据。
**numpy.savez(file, *args, kwds)
- file:要保存的文件,扩展名为 .npz,如果文件路径末尾没有扩展名 .npz,该扩展名会被自动加上。
- args: 要保存的数组,可以使用关键字参数为数组起一个名字,非关键字参数传递的数组会自动起名为 arr_0, arr_1, … 。
- kwds: 要保存的数组使用关键字名称。
savetxt() 函数是以简单的文本文件格式存储数据,对应的使用 loadtxt() 函数来获取数据。
np.loadtxt(FILENAME, dtype=int, delimiter=' ')
np.savetxt(FILENAME, a, fmt="%d", delimiter=",")
参数 delimiter 可以指定各种分隔符、针对特定列的转换器函数、需要跳过的行数等。
import numpy as np
a = np.array([1,2,3,4,5])
np.savetxt('out.txt',a)
b = np.loadtxt('out.txt')
print(b) #[1. 2. 3. 4. 5.]
使用 delimiter 参数:
import numpy as np
a=np.arange(0,10,0.5).reshape(4,-1)
np.savetxt("out.txt",a,fmt="%d",delimiter=",") # 改为保存为整数,以逗号分隔
b = np.loadtxt("out.txt",delimiter=",") # load 时也要指定为逗号分隔
print(b)
[[0. 0. 1. 1. 2.]
[2. 3. 3. 4. 4.]
[5. 5. 6. 6. 7.]
[7. 8. 8. 9. 9.]]
(2)保存为.txt
文件:
保存.txt需要将列表内容转为字符串格式
##保存
ipTable=['123.111.111.1','111.111.111.1']
fileObject = open('sampleList.txt', 'w')
for ip in ipTable:
fileObject.write(str(ip))
fileObject.write('\n')
fileObject.close()
##读取
f = open("sampleList.txt","r") #设置文件对象
str = f.read() #将txt文件的所有内容读入到字符串str中
f.close() #将文件关闭
保存为.npy会保留列表原有的内容格式,使用更为方便,
但保存为.txt格式同样的数据占用空间会更小。
python保存字典
(1)使用numpy,保存为.npy文件
import numpy as np
# Save
dict = {'a':1,'b':2,'c':3}
np.save('my_file.npy', dict) # 注意带上后缀名
# Load
load_dict = np.load('my_file.npy').item()
print(load_dict['a'])
(2)使用pickle,保存为.pkl文件
# 字典保存
dict = {'a':1,'b':2,'c':3}
f_save = open('dict_file.pkl', 'wb')
pickle.dump(dict, f_save)
f_save.close()
# # 读取
f_read = open('dict_file.pkl', 'rb')
dict2 = pickle.load(f_read)
print(dict2)
f_read.close()
(3)使用JSON(可在pycharm中直接查看)
在python中,JSON模块提供以下四个功能,dumps
、dump
、loads
、load
。其中dumps把数据类型转换成字符串并存储在文件中,loads把字符串转换成数据类型,load把文件打开从字符串转换成数据类型;
- 字典转化为JSON并写入
import json
# 创建字典
info_dict = {'name': 'Joe', 'age': 20, 'job': 'driver'}
# dumps 将数据转换成字符串
info_json = json.dumps(info_dict,sort_keys=False, indent=4, separators=(',', ': '))
# 显示数据类型
print(type(info_json))
f = open('info.json', 'w')
f.write(info_json)
- 读取JSON文件,并转化为字典
# JSON到字典转化
f2 = open('info.json', 'r')
info_data = json.load(f2)
print(info_data)
# 显示数据类型
print(type(info_data))