2016-10-19 2 views
3

В основном я хотел бы сохранить список на python, а затем, когда программа запустится, я хотел бы получить данные из файла и вернуть их обратно в список.
До сих пор это код, я используюPython сохранить список и прочитать данные из файла

mylist = pickle.load("save.txt") 
... 
saveToList = (name, data) 
mylist.append(saveList) 
import pickle 
pickle.dump(mylist, "save.txt") 

Но он просто возвращает следующее сообщение об ошибке: TypeError: файл должен быть «читать» и "Readline атрибутов

ответ

4

Вам нужен файловый объект, а не только имя файла. Попробуйте это для экономии:

pickle.dump(mylist, open("save.txt", "wb")) 

или лучше, чтобы гарантировать файл должным образом закрыт:

with open("save.txt", "wb") as f: 
    pickle.dump(mylist, f) 

, а затем это для загрузки:

with open("save.txt", "rb") as f: 
    mylist = pickle.load(f) 

Кроме того, я предлагаю другое расширение от .txt, как, может быть, .dat, потому что содержимое не является обычным текстом.

+0

я получаю TypeError: Функция принимает максимум 1 позиционные аргументы (2 приведены) – Octo

+0

@DarkchiliSlayer К сожалению, фиксированный –

1
with open("save.txt", "w") as f: 
    pickle.dump(f, mylist) 

Обратитесь к документации на пикет python для использования.

1

pickle.dump принимает объект файла в качестве аргумента вместо имени файла строки

pickle.dump(mylist, open("save.txt", "wb"))