2016-09-14 5 views
1

Почему pickle файл не изменяется? Но после того, как я раскомментирую линию, она работает?Сброс рассола не работает с rb +

with open(PATH, "rb+") as fp: 
    mocks_pickle = pickle.load(fp) 
    mocks_pickle['aa'] = '123' 
    # pickle.dump(mocks_pickle, open(PATH, 'wb')) 
    pickle.dump(mocks_pickle, fp) 
+0

Но r + открывает файл для чтения и записи. – HereHere

ответ

2

Перед тем, как сбросить объект, вам необходимо найти начало файла с fp.seek(0).

Если вы не ищете, добавьте новый маринад в конец файла. И когда вы pickle.load из файла, вы получаете только первое, что есть в файле.

with open(PATH, "rb+") as fp: 
    mocks_pickle = pickle.load(fp) 
    mocks_pickle['aa'] = '123' 
    fp.seek(0) 
    pickle.dump(mocks_pickle, fp) 

 Смежные вопросы

  • Нет связанных вопросов^_^