2017-04-17 4 views
0

Ich habe einen Python-Code, der einen Dateinamen als Eingabe und analysiert die Daten im Bericht und gibt Ausgabe im GUI-Fenster . Wenn ich versuche, den Bericht zu analysieren, erhalte ich einen Index außerhalb des Bereichsfehlers. Ich weiß, dass der Fehler wegen sys.argv [1] Argument ist. Aber ich bin nicht in der Lage herauszufinden, warum sys.argv [1] den Dateinamen nicht speichern kann.QApplication (sys.argv) gibt Index außerhalb des Bereichs für sys.argv [1] in Python

Ich habe alle Python-Module deinstalliert, und ich habe den Parser, der den Fehler ausgelöst hat, entfernt.

Ich habe auch Python-Pfad aus der Umgebungsvariablen und auch aus der Registrierung entfernt und dann die Python und meine Parser-Software neu installiert.

Ich habe auch Daten von Nutzern \% Benutzername% \ AppData

gelöscht sowohl Nach der Neuinstallation (python2.7.3 und meine Software von Drittanbietern) Ich habe auch Änderung der Registrierungseintrag HKEY_CLASSES_ROOT \ Applications \ python26 gemacht. exe \ shell \ open \ command bis C:> ftype Python26.File = "C: \ Python26 \ python.exe" "% 1"% * Sogar ich habe den Python-Pfad unter Umgebungsvariable hinzugefügt.

Das funktioniert gut auf anderen Maschinen und auch es funktionierte gut auf meiner Maschine bis zum Tag, ich Python 3.xx deinstalliert (ich hatte sowohl 3.xx und 2.7.3) von meinem Rechner.

Ich erhalte Fehler in file_name = file_path [0] diese Linie ich nicht in der Lage bin zu verstehen, wenn sys.arg [1] nicht vorhanden ist, dann sollte es Fehler wirft in file_path = sys.argv [1 :] diese Zeile. Aber wie ist es in der Lage, die Zeichenfolge in file_path als Listen Größe ist nur 1 zu speichern.

Kann mir jemand bei der Lösung dieses Problems helfen. Danke im Voraus.

if __name__ == "__main__": 
app = QtGui.QApplication(sys.argv) 
file_path = sys.argv[1:] 
open_window = TelematicsFileViewer() 
open_window.show() 
file_name = file_path[0] 
path = file_path[1] 
open_window.parsed_file_out(file_name, path) 
sys.exit(app.exec_()) 
+0

Wenn sys.argv die Länge 1 ist, wird sys.argv [1:] keinen Fehler ausgeben, es wird nur eine leere Liste zurückgegeben. – flyingmeatball

Antwort

0

Wie @flyingmeatball sagt es leere Liste zurück [], die dann einen Fehler verursacht, wenn Sie das erste Element der leeren Liste verweisen.

So könnte eine Prüfung so hoch wie möglich in Ihrem Skript hinzufügen, um mit dem Fehlercode 1 zu beenden, damit der Rest des Skripts nicht ausgeführt wird.

if len(sys.argv) < 4: # require file name and at least 2 args 
    print 'Include at least two arguments and retry.' 
    sys.exit(1) 
Verwandte Themen