EDITED
Мой код:Python 3.4 pickle.load() не работают
#!/usr/bin/python3
import os.path
import pickle
def read_hts(hts):
if(os.path.isfile("hts.pickle")):
p = open("hts.pickle", "rb")
hts = pickle.load(p)
p.close()
else:
f = open("hts.dat", "r")
for line in f:
spl = line.split()
val = [spl[2], spl[3], spl[4]]
hts[spl[0]+"."+spl[1]] = val
f.close()
p = open("hts.pickle", "wb")
pickle.dump(hts, p)
p.close()
def main():
hts = {}
read_hts(hts)
print(list(hts))
main()
Файл hts.dat:
1 A1 1 1 6523.00
1 A2 1 2 10823.08
1 A3 1 3 8661.76
1 A4 1 4 9851.96
1 A5 1 5 6701.12
1 A6 1 6 12934.13
1 A7 1 7 11882.38
1 A8 1 8 9787.36
1 A9 1 9 10292.06
1 A10 1 10 9040.32
1 A11 1 11 12742.89
1 A12 1 12 11607.01
1 A13 1 13 13638.06
1 A14 1 14 11038.11
1 A15 1 15 11839.42
1 A16 1 16 13206.73
Если нет hts.pickle выход :
['1.A3', '1.A7', '1.A14', '1.A11', '1.A8', '1.A16', '1.A15', '1.A12', '1.A9', '1.A4', '1.A1', '1.A6', '1.A10', '1.A2', '1.A5', '1.A13']
Но если есть hts.pickle выход только:
[]
Я не понимаю, почему он не восстанавливает диктатор. EDIT: Я думаю, что маринование не проблема. Это должно быть проблемой с переменными.
В первый раз (сброс) он работает нормально, но все мои звонки я получаю пустой список. Я использую python 3.4 – perllover
Все еще не могу воспроизвести. вы не можете попробовать напечатать 'hts' внутри цикла if. И я надеюсь, что вы правильно импортируете «os.path» и «pickle» в начале? –
Я отредактировал мой код. Я думаю, что это проблема с переменными – perllover