Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 递归地从cPickle加载并创建变量来存储它们_Python_Variable Names - Fatal编程技术网

Python 递归地从cPickle加载并创建变量来存储它们

Python 递归地从cPickle加载并创建变量来存储它们,python,variable-names,Python,Variable Names,我手头有26个.pkl文件,从dict_a.pkl到dict_z.pkl。我想把它们加载到内存中,这样我就可以比较从dict_a.pkl加载的变量开始的元素。我想这样做的原因是每个文件都非常大,如果我把它们都放在一个大文件中,它将太大而无法消化。若我以一种特别的方式加载文件,那个么它将不断地读取磁盘 import string alphabet = string.lowercase for alpha in alphabet: ff = 'dict_'+alpha+'.pkl' w

我手头有26个.pkl文件,从dict_a.pkl到dict_z.pkl。我想把它们加载到内存中,这样我就可以比较从dict_a.pkl加载的变量开始的元素。我想这样做的原因是每个文件都非常大,如果我把它们都放在一个大文件中,它将太大而无法消化。若我以一种特别的方式加载文件,那个么它将不断地读取磁盘

import string
alphabet = string.lowercase

for alpha in alphabet:
   ff = 'dict_'+alpha+'.pkl'
   with open(ff, 'r') as tt:
       temp = cPickle.load(tt)

如何在循环中用dict_a,dict_b替换temp变量,这样在循环后,我可以直接使用变量dict_a来dict_z

您可以使用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循环中,我打开每个文件,并将字典加载到具有相应文件名的字典中

例:


这是dictionary dict_a.pkl={values from dict_a.pkl}类型的变量

您可以有一个dict键'dict_a',dict_b。。。当对应的值是pickle对象时,您可能喜欢的一个技巧是:可以将多个pickle保存到单个文件中,然后逐个加载它们。你不需要26个文件。谢谢,@bernie。我的泡菜是多维度的列表。在为它们编制索引时,代码将无法读取。我将尝试找出其他方法。我尝试运行您的代码。如果我是正确的,第三行应该是“*.pkl”。我尝试运行您的代码。第三行应该是“*.pkl”,如果我是正确的话。pklfiles只是一个包含所有pkl文件名的列表,比如dict_x.pkl。根据代码,我想它将输出dict_x.pkl之类的变量。但这绝对不是一个变量名。运行代码后,我只得到了一个包含最后一个pkl文件内容的变量pklfile。可能我没有正确运行它,在运行代码后,我只得到了一个包含最后一个pkl文件内容的变量pklfile。第三行应该是picklefiles=glob.glob'*.pkl'。结果是pickle文件,对吗?实际上是for循环。是否使用pickle文件替换pickle文件中的原始字符串?