2016-02-03 3 views
-1

это мой код, но я не могу использовать pickle для загрузки его послесловий, также думаю, что это довольно неэффективно, спасибо. Файл записи:Python Dictionary Pickling

import pickle 

cont="yes" 
u_ele_stu={} 
ele_pl_stu={} 
x=len(u_ele_stu) 
y=len(ele_pl_stu) 

with open("Tennis Scores.txt" ,"wb") as a: 
while cont=="yes": 
    age=input("Would you like to add to under 11 list or 11-16? (under 11/11-16)") 
    if age=="under 11": 
     name=input("Input the name of a student: ") 
     pos=str(input("Input the last position they achieved in a tournament")) 
     u_ele_stu[x+1]=name, " ", pos 
    elif age=="11-16": 
     name=input("Input the name of a student: ") 
     pos=str(input("Input the last position they achieved in a tournament")) 
     ele_pl_stu[y+1]=name, " ", pos 
    cont=input("Would you like to add another student? yes/no") 
    cont.lower() 
if cont!="yes": 
    pickle.dump(u_ele_stu, a) 
    pickle.dump(ele_pl_stu, a) 

Считанные файла:

import pickle 

with open("Tennis Scores.txt", "r") as a: 
    b=pickle.load(a) 
    c=pickle.load(a) 
    print(b) 
    print(c) 
+0

Вы уверены, что ваш отступы правильно? – erip

+0

Также не используйте пробелы в именах файлов. Или, по крайней мере, избежать пробелов. – erip

+0

Вы думаете, что это неэффективно по сравнению с чем? – msw

ответ

0

Попытка сброса каждого объекта в отдельном файле:

with open('u_ele_stu.txt', 'wb') as f: 
    pickle.dump(u_ele_stu, f) 

with open('ele_pl_stu.txt', 'wb') as f: 
    pickle.dump(ele_pl_stu, f) 
0

Я зафиксировал эту проблему путем добавления Ь к «г », Я не думаю, что это самый эффективный способ, однако, это просто werkz ...

с открытым ("Теннис Scores.txt", "г б"), как:

+0

Так вы это делаете. Вы пишете двоичные данные, поэтому вам нужно читать двоичные данные. – Matthias