Python 如何使用joblib附加数据?

Python 如何使用joblib附加数据?,python,joblib,Python,Joblib,我试图在工作流的不同位置使用joblib.dump()保存数据,并希望在工作流中移动时将数据附加到保存文件中。当我尝试这样做时,每次都会得到原始词典,但没有附加任何内容。我使用的语法类似于json.dump() 以下是我尝试过的: foo_path = base_directory + r'append_try.pkl' # note base_directory is a full absolute path init_data = {'yummy': 1, 'funny': 2} secon

我试图在工作流的不同位置使用
joblib.dump()
保存数据,并希望在工作流中移动时将数据附加到保存文件中。当我尝试这样做时,每次都会得到原始词典,但没有附加任何内容。我使用的语法类似于
json.dump()

以下是我尝试过的:

foo_path = base_directory + r'append_try.pkl' # note base_directory is a full absolute path
init_data = {'yummy': 1, 'funny': 2}
second_data = {'sunny': 3, 'runny': 4}
# dump initial data
with open(foo_path, 'wb') as io:
    joblib.dump(init_data, io)
现在只需确保这一点起作用:

with open(foo_path, 'rb') as io:
    foo_dat = joblib.load(io)
print(foo_dat)  #this works
现在,请尝试附加第二个数据,然后加载该文件以查看其是否有效:

# Similar syntax to json.dump
with open(foo_path, 'ab') as io:
    joblib.dump(second_data, io)

# see if it worked
with open(foo_path, 'rb') as io:
    foo_dat2 = joblib.load(io)
print(foo_dat2)
这只是返回初始数据。注意,我还尝试将写入模式指定为
a+b
ab+
。那些也没用。另外,虽然这是一个简单的数字示例,但在我的应用程序中,我保存的是numpy数组,所以我不能只使用
json.dump()


作为一种解决方法,我目前正在代码中将附加信息添加到字典中,并覆盖该文件。

我对joblib库不太熟悉,但由于您两次将其转储到该文件中,这将创建一个包含两个对象的文件,而不是两个对象的列表。因此,您可能需要从同一文件对象加载()两次:

with open(foo_path, 'rb') as io:
    foo_dat1 = joblib.load(io)
    foo_dat2 = joblib.load(io)
如果
joblib.load()
方法只知道读取它需要读取的内容,并将文件对象保留在下一个对象的开头,例如它所基于的
pickle.load()
,则读取连接的文件可能会起作用。需要注意的是,
json.load()
也不支持读取连接的json,它希望该文件只包含一个完整的json对象,如果试图读取通过将多个对象连接到一个文件中创建的文件,则会引发额外的数据错误