Я бы не одобрял использование такого кода, вместо этого я бы настоятельно призвал вас обновить вопрос с вашей актуальной проблемой, которую вы пытаетесь решить, а не с возможностью открыть объект рассола в режиме чтения и записи. Причиной оборачивания его в try и кроме является первый запуск, когда файл pickle не существует, поэтому мы его создадим.
import pickle
try:
with open("my_pickle.file", "rb+") as pickle_file:
mylist = pickle.load(pickle_file)
mylist = [i * 2 for i in mylist]
pickle_file.seek(0)
pickle.dump(mylist, pickle_file)
print(mylist)
except FileNotFoundError as fnfe:
with open("my_pickle.file", "wb") as pickle_file:
pickle.dump([1, 2, 3], pickle_file)
при запуске этого сценария 5 раз, при первом создании маринованного объекта в следующие 4 раза он удваивает значения в списке
OUTPUT
[1, 2, 3]
[2, 4, 6]
[4, 8, 12]
[8, 16, 24]
[16, 32, 48]
Но опять же это не то, что я бы рекомендовал. Вместо этого, возможно, есть лучший способ подойти к этой проблеме и получить некоторые другие ответы, если вы обновите свой вопрос своим реальным кодом и проблемой.