Ошибка Pickle: IndexError: список индексов вне диапазона - PullRequest
0 голосов
/ 19 мая 2018

Я делал простое маленькое ядро ​​операционной системы, я внедрил базовую (кстати, очень уязвимую, сейчас она только в бета-версии 1) систему паролей, и она сразу же вылетает после запуска.Поэтому я помещаю его в командную строку для устранения неполадок и получаю огромную ошибку.

    C:\Users\Evan\Documents\pynix\3.4.3\beta>C:\Users\Evan\Documents\pynix\3.4.3\beta\beta1kernel.py
Traceback (most recent call last):
  File "C:\Users\Evan\Documents\pynix\3.4.3\beta\beta1kernel.py", line 11, in <module>
    password = pickle.load(infile)
  File "C:\Python2732\lib\pickle.py", line 1384, in load
    return Unpickler(file).load()
  File "C:\Python2732\lib\pickle.py", line 864, in load
    dispatch[key](self)
  File "C:\Python2732\lib\pickle.py", line 1171, in load_put
    self.memo[self.readline()[:-1]] = self.stack[-1]
IndexError: list index out of range

Я не знаю, в чем проблема, но я использую Spyder с Python 3, и файл существует ив том же каталоге тоже ... Код следующий:

import random
import pickle
infile = open("save",'rb')
password = pickle.load(infile)
infile.close()

passinput = input("Insert your password, if you do not have a password, create a save file named 'save' and type your desired password.")
if passinput != password:
    print("Password is incorrect, please try again")
    input()
else:
And the rest

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Если save - файл, вы должны объявить его формат, например save.pickle.Если это каталог, то вы должны указать полный путь и имя файла с его форматом, например home/save/myfile.pickle.

0 голосов
/ 19 мая 2018

проблема в вашем коде может заключаться в том, что вы не указали правильный путь к save file.so, выполните следующее

Если файл находится в той же папке, что и скрипт, тогда

import os
import random
import pickle
infile = open(os.path.join(os.path.dirname(__file__),"save"),'rb')
password = pickle.load(infile)
infile.close()

Если файл находится в другом месте, укажите полный путь к файлу

import random
import pickle
infile = open("Give_complete path to the file",'rb')
password = pickle.load(infile)
infile.close()
...