在python中使用dill从文件夹加载多个文件?

在python中使用dill从文件夹加载多个文件?,python,python-3.x,dill,Python,Python 3.x,Dill,我有一个包含100个*.sav文件的文件夹,我必须将所有文件加载到一个列表中,文件名保存为my_files_0、my_files_1、my_files_2、my_files_3 所以,我试着: import dill my_files = [] files_name_list = glob.glob('c:/files/*.sav') for i in np.arange(1, len(files_name_list)): with open('c:/files/my_files_%i.

我有一个包含100个*.sav文件的文件夹,我必须将所有文件加载到一个列表中,文件名保存为my_files_0、my_files_1、my_files_2、my_files_3

所以,我试着:

import dill
my_files = []
files_name_list = glob.glob('c:/files/*.sav')
for i in np.arange(1, len(files_name_list)):
    with open('c:/files/my_files_%i.sav'%i, 'rb') as f: my_files = dill.load(f)
my_files

这里的
my_files
列表中只有一个文件。我需要列表中的所有100个文件,因此我可以根据索引my_files[0]来访问它们。…

我使用了数组而不是列表,这很有效

file_array=[0]*len(files_name_list)
for i in np.arange(0, len(file_name_list)):
    with open('c:/files/my_files_%i.sav'%i, 'rb') as f: 
        file_array[i] = dill.load(f)
        f.close()

my_files
中只有一个文件的原因是不断覆盖最后的结果。我认为您想做的是在每次迭代列表时附加新结果:

import dill
my_files = []
files_name_list = glob.glob('c:/files/*.sav')
for i in np.arange(1, len(files_name_list)):
    with open('c:/files/my_files_%i.sav'%i, 'rb') as f:
        my_files.append(dill.load(f))

另外,请注意,在您的解决方案中,当您使用
with
打开
f
时,您不需要执行
f.close()
——当它离开
with
块时,它将关闭。

这是否必须使用dill完成?是的,它的建模文件、作业库和pickle不工作,因此我使用dill,但如果有选项,我可以尝试,但如果保存为joblib或pickle,则必须复制错误