Ive писал этот скрипт python некоторое время, и я просто столкнулся с этой ошибкой. Im думает, что мне нужно иметь еще одно значение для распаковки, но я не знаю, какое значение им должно было вложить туда? Любая помощь будет принята с благодарностью.Raspberry Pi Python ValueError?
ОШИБКА
File "door_controllerTEST_V4_RFID.py", line 101, in <module>
main()
File "door_controllerTEST_V4_RFID.py", line 94, in main
authenticator = RfidFileAuthenticator()
File "door_controllerTEST_V4_RFID.py", line 73, in __init__
self.readFile()
File "door_controllerTEST_V4_RFID.py", line 80, in readFile
id, tag = line.split(',')
ValueError: need more than 1 value to unpack
Script
#!/usr/bin/env python3
"""Door Lock: System to control an electric lock"""
import piface.pfio as piface
import piface.pfio as pfio
from time import sleep
pfio.init()
class AuthToken:
def __init__(self, id, secret):
self.id=id
self.secret=secret
class DoorControllerPiFace:
def send_open_pulse(self):
piface.digital_write(0,1)
sleep(5)
piface.digital_write(0,0)
class RfidInput:
def getInput(self):
print "waiting for tag"
tag = raw_input()
return AuthToken(None,tag)
class RfidFileAuthenticator:
filename = "tags.txt"
tags = dict()
def __init__(self):
self.readFile()
def readFile(self):
secrets = open(self.filename, 'r')
print "reading from " + self.filename + " file"
for line in secrets:
line = line.rstrip('\n')
id, tag = line.split(',')
self.tags[tag] = id
def check(self,token):
print "checking if " + token.secret + " is valid"
if token.secret in self.tags:
print "tag found belonging to: " + self.tags[token.secret]
return True
else: "tag not found"
print
return False
def main():
authInput = RfidInput()
authenticator = RfidFileAuthenticator()
doorController = DoorControllerPiFace()
if(authenticator.check(authInput.getInput())):
doorController.send_open_pulse()
if __name__ == '__main__':
main()
Итак, идея пришла ко мне об этом, желая больше линий. Поэтому у меня была только одна строка в моем файле секретов. Поэтому я добавил несколько фиктивных строк, чтобы проверить, не ищет ли он больше имен. И бам! это сработало. После добавления некоторых фиктивных имен пользователей и пароля скрипт работал отлично – Celerium