2017-06-30 3 views
0

das ProblemPython Valueerror: Notwendigkeit, mehr als 1 Wert zu auspacken

username, password = line.strip().split(":")
ValueError:need more than 1 value to unpack

dies das Skript

print '[+] Bruteforcing against %s with dictionary %s' % (ip, filename) 
for line in fd.readlines(): 
    username, password = line.strip().split(":") 
    t = threading.Thread(target=attempt, args=(ip,username,password)) 
+0

Ist die Datei, die Sie lesen gerade auf leer? Es sieht so aus, als würdest du versuchen, zwei Variablen gleichzeitig einen Wert zu geben, aber Split gibt nur ein Ergebnis zurück – Xatyrian

+0

Das Problem ist, dass es kein ':' in 'line' gibt –

Antwort

1

Sie sind aus einer geöffneten Datei Zeile für Zeile zu lesen, werden die jeweils Zeilen gespeichert vorübergehend in eine Variable "line" .Nachdem Sie alle Leerzeichen am Anfang und am Ende jeder Zeile entfernt haben, haben Sie versucht, diese Zeile in zwei Teile zu teilen, von denen einer vor dem Zeichen ':' und der andere nach dem Zeichen ':' , und speichern Sie sie in zwei Variablen "Benutzername" und "Passwort".

Hier besteht der mögliche Grund für einen Fehler darin, dass Sie versuchen, die Zeile in zwei Teile aufzuteilen, wobei das Zeichen ':' existiert. Was passiert, wenn das Zeichen ':' nicht in der Zeile existiert? Dies ist der mögliche Grund für die Art des Fehlers, den Sie bekommen haben.

Mein Vorschlag ist, dass zu überprüfen versuchen, wenn Zeichen in der Zeile vorhanden ist, wenn es dann existieren versuchen geteilt Linie

Zum Beispiel können Sie einfach überprüfen:

if line.find(':')!=-1: 
    username, password = line.strip().split(":") 
Verwandte Themen