2017-11-27 3 views
-2

hinzugefügt Text-Code, Entschuldigung für die Unannehmlichkeiten, ich wollte nur die Terminal-Ausgabe in meinem Beitrag enthalten.bekommen IndexError: Liste Index außerhalb des Bereichs nach der Ausführung

edit2: alle Bilder entfernt, hier ist mein neuester Code + Eingabe/Ausgabe im Textformat, ich fand den Fehler in der Eingabedatei aber ich konnte es nicht mit Code beheben, da ist eine komplett leere Zeile am Ende der Datei, wenn ich die Datei manuell bearbeiten und Speicherplatz zurück, um es zu entfernen, funktioniert der Code gut, gibt es sowieso, um dieses Problem zu lösen, ist meine CSV-Dateien automatisch von Airodump generiert und ich weiß nicht, ob ich ihre Formatierung steuern kann.

#!/usr/bin/env python 

import time 
import csv 

#def nonblank_lines(f): 
# for l in f: 
#  line = l.rstrip() 
#  if line: 
#   yield line 

with open('root-01.csv', 'r') as csv_file: 
csv_reader = csv.reader(csv_file) 
with open('station_value.csv', 'w') as station_file: 
    csv_writer = csv.writer(station_file, delimiter = ',') 
    for skip in range(4): 
     next(csv_reader) 
    for line in csv_reader: 
     csv_writer.writerow(line) 

with open('station_value.csv', 'r') as csv_file2: 
# for line in nonblank_lines(csv_file2): 
csv_reader2 = csv.reader(csv_file2) 
with open('pwr_value.csv', 'w') as pwr_file: 
    csv_writer2 = csv.writer(pwr_file, delimiter = ',') 
    for line in csv_reader2: 
     try:  
      print(line)  
      csv_writer2.writerow([line[3]]) 
     except Exception as details: 
      print('Invalid data:',line,'rejected due to',details) 

hier ist meine Eingabedatei im Textformat:

root-01.csv

BSSID, First time seen, Last time seen, channel, Speed, Privacy, Cipher, Authentication, Power, # beacons, # IV, LAN IP, ID-length, ESSID, Key 

1C:5F:2B:0A:02:58, 2017-12-02 04:01:06, 2017-12-02 04:02:34, 6, 54, WPA2, CCMP TKIP,PSK, -85,  654,  155, 0. 0. 0. 0, 6, Halbos, 



Station MAC, First time seen, Last time seen, Power, # packets, BSSID, Probed ESSIDs 

40:40:A7:67:90:0E, 2017-12-02 04:01:16, 2017-12-02 04:02:33, -1,  63, 1C:5F:2B:0A:02:58, 

80:3F:5D:F9:1F:AB, 2017-12-02 04:01:22, 2017-12-02 04:02:09, 0,  557, 1C:5F:2B:0A:02:58, 

station_value.csv

Station MAC, First time seen, Last time seen, Power, # packets, BSSID, Probed ESSIDs 

40:40:A7:67:90:0E, 2017-12-02 04:01:16, 2017-12-02 04:02:33, -1,  63, 1C:5F:2B:0A:02:58, 

80:3F:5D:F9:1F:AB, 2017-12-02 04:01:22, 2017-12-02 04:02:09, 0,  557, 1C:5F:2B:0A:02:58, 

pwr_value.csv

Power 

    -1 

    0 

bekommen stations_value.csv funktioniert gut, das Problem tritt auf (soweit ich verstehe), wenn ich den Wert von Zeile [3] aus statio_value.csv abrufen und es in eine neue Datei pwr_value.csv schreiben möchten, da es ein gibt zusätzliche Zeile am Ende der Stationsdatei, die nicht die gleiche Größe wie die vorherigen Zeilen hat. Ich habe versucht, die Stack-Trace zu bekommen, war aber nicht in der Lage, da das Debugging-Tool zeigt immer leere Leerzeichen, wenn ich die Stack-Trace öffnen.

Ich verstehe auch nicht, warum immer noch die pwr_value-Datei erzeugt, obwohl es einen Fehler gibt?

+1

Post Code als Text, nicht als Bild! – Igle

+0

BTW, wenn Sie eine Ausnahme erhalten, kann es keine "erfolgreiche Ausführung" per Definition – DeepSpace

+0

sein. Bitte lesen Sie [Warum kann ich keine Bilder von Code auf SO hochladen, wenn Sie eine Frage stellen?] (Http://meta.stackoverflow.com/questions/285551/why-may-ich-nicht-upload-images-of-code-auf-so-wenn-eine-frage-frage) –

Antwort

0

Ich muss hier einige Annahmen machen, weil Sie den Stack-Trace nicht veröffentlicht haben, und Sie haben keine Beispieldatendatei veröffentlicht. Aber der einzige Ort, an dem Sie diesen Fehler haben könnten, ist Zeile 9, und der einzige Grund, den Sie bekommen würden, ist, weil Sie erwarten, dass die CSV-Datei 4 Spalten hat und eine Zeile der Datei (bei einer Schätzung, die letzte) nicht. Ich vermute, dass Sie am Ende Ihrer Eingabedatei eine abschließende Leerzeile haben, aber es könnte sich um Duff-Daten in der Mitte handeln. Eine print Anweisung (wie timgeb schon sagt) wäre gut, aber man könnte auch eine ständige Überprüfung Falle in Ihrem Code, zum Beispiel setzen,

for line in csv_reader: 
    try: 
     print(line[3]) 
    except Exception as details: 
     print('Invalid data:',line,'rejected due to',details) 
+0

Danke für die Antwort, ich habe die CSV-Datei in der Post enthalten, es war dort zunächst, aber ich habe es entfernt, weil es auch den Code hatte, der anscheinend nicht erlaubt war, Entschuldigung für etwaige Unannehmlichkeiten. –

+0

Das ist nicht die Eingabe, es ist ein Bild von der Eingabe. Der Grund, warum Bilder Ihres Codes nicht erlaubt sind, ist, dass wir sie nicht ausführen können. Und ein Bild der Eingabe ist aus dem gleichen Grund nicht sinnvoll. Ihr Programm erwartet ASCII-Daten, kein Bild. Wie ich bereits erwähnt habe, liegt das von Ihnen gemeldete Problem höchstwahrscheinlich in den Daten und nicht im Code. Veröffentlichen Sie Ihre Eingabe als Code, Ihre Ausgabe als Code und melden Sie die gesamte Fehlermeldung, die Sie erhalten, einschließlich des Stack-Trace. Andernfalls ist es nicht möglich, Ihr Problem zu reproduzieren. – BoarGules

+0

Sie waren absolut richtig mit Ihrer Schätzung "und der einzige Grund, den Sie erhalten würden, ist, weil Sie erwarten, dass die CSV-Datei 4 Spalten haben, und eine Zeile der Datei (bei einer Schätzung, die letzte) nicht."Ich habe meine Eingabedatei manuell bearbeitet und der Code hat funktioniert, aber gibt es eine Möglichkeit dies zu tun, wie die letzte Zeile ignoriert oder nicht berücksichtigt wird (vielleicht vom Ende der Liste entfernt)? –

Verwandte Themen