我手边有26个.pkl
个文件,从dict_a.pkl
到dict_z.pkl
。我想将它们加载到内存中,因此我可以将元素开头与从dict_a.pkl
加载的变量进行比较。我想这样做的原因是每个文件都非常大,如果我把它们全部放在一个大文件中,它就太大了无法消化。如果我以ad hoc样式加载文件,那么它将不断读取磁盘。
import string
alphabet = string.lowercase
for alpha in alphabet:
ff = 'dict_'+alpha+'.pkl'
with open(ff, 'r') as tt:
temp = cPickle.load(tt)
如何在循环中将temp
变量替换为dict_a
,dict_b
,因此在循环之后,我可以直接使用变量dict_a
来{{1 }}。
答案 0 :(得分:0)
您可以使用glob模块加载pickle文件,然后逐个处理它们。
import glob
import cPickle as pickle
picklefiles = glob.glob('*.pkl')
for pklfile in picklefiles:
with open(pklfile,'rb') as f:
pklfile = pickle.load(f)
现在您有26个字典及其相应的文件名。
编辑:你是对的@Sean我搞砸了它应该是picklefiles而不是pklfiles的第三行。我已更新了代码段
编辑2:picklefiles是一个包含扩展名为.pkl的所有文件名的列表。在这种情况下
picklefiles = [ 'dict_a.pkl', 'dict_b.pkl', ........ 'dict_z.pkl' ]
在for循环中,我打开每个文件并将字典加载到具有相应文件名的字典中。
前:
(这是字典类型的变量)dict_a.pkl = {来自dict_a.pkl的值}