Seite 1 von 1
Traceback (most recent call last) Fehler
Verfasst: Donnerstag 15. September 2011, 12:49
von user1308
Hallo zusammen,
Ich bin ein Python Neuling und habe folgendes problem.
Ich möchte überprüfen, ob ein string, der eine URL enthält ein "http://" am Anfang besitzt oder nicht und abhängig davon aktionen ausführen.
ich hab folgenden Code dafür geschrieben.
Allerdings bekomme ich immer einen Fehler beim ausführen des codes in der kommandozeile:
Traceback(most recent call last):
File "C:\Users\Admin\Desktop\link.py", line 14, in <module>
Hier nun der Code:
Code: Alles auswählen
# -*- coding: UTF-8 -*-
import cgi
import webbrowser
# Get a POST data.
form = cgi.FieldStorage()
link="http://www.webseite.de"
vergleich="http://"
ret=True
i=0
while i<=7:
if vergleich[i] != link[i]:
ret=False
i=i+1
if ret == True:
normalerweise wird die URL über durch ein Formular übergeben.. um den code zu testen hab ich ihn in diesem beispiel per hand eingegeben, falls sich jemand wundert über das form element.
Re: Traceback (most recent call last) Fehler
Verfasst: Donnerstag 15. September 2011, 13:03
von cofi
Willkommen im Forum und zu Python!
Aber bei dem Traceback fehlt der wichtige Teil.
Edit: Dein Vergleich in der Schleife ist falsch, es muss `i < 7` heissen, Python Sequenzen (Strings, Listen, ...) sind 0-indiziert.
Aber du willst das nutzen:
Code: Alles auswählen
# -*- coding: utf-8 -*-
import cgi
import webbrowser
# Get a POST data.
form = cgi.FieldStorage()
link="http://www.webseite.de"
vergleich="http://"
if link.startswith(vergleich):
Noch ein wenig Kritik zum alten Code:
* mit `len` kommst du an die Laenge eines Strings
* fuer schleifen deren Abbruchkriterium von vorneherein feststeht gibt es `for`
* boolsche Werte muss man nicht vergleichen, um zu boolschen Werten zu kommen
Re: Traceback (most recent call last) Fehler
Verfasst: Donnerstag 15. September 2011, 13:23
von user1308
Vielen Dank schon einmal.
Über die von dir angesprochenen Dinge bin ich schon einmal gestolpert.
Ich bau das Programm die ganze Zeit schon um. Hatte es erst mit einer for schleife in einer Funktion. Aber auch hier bekomme ich dieselbe Fehlermeldung. Wie kann ich an eine genauere Fehlerbeschreibung kommen?
Re: Traceback (most recent call last) Fehler
Verfasst: Donnerstag 15. September 2011, 13:30
von cofi
Das sollte so aussehen:
Code: Alles auswählen
%> python
Python 2.6.7 (r267:88850, Aug 3 2011, 11:33:52)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> link="http://www.webseite.de"
>>>
>>> vergleich="http://"
>>> ret=True
>>> i=0
>>> while i<=7:
... if vergleich[i] != link[i]:
... ret=False
... i=i+1
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IndexError: string index out of range
Edit: Bis auf die Datei-Angabe: Die stimmt, wenn man es als Skript ausfuehrt.
Re: Traceback (most recent call last) Fehler
Verfasst: Donnerstag 15. September 2011, 13:33
von user1308
nein, bekomme ich nicht..
wie gesagt ich starte das programm aus der kommandozeile heraus und bekomme wirklich nur einen zweizeiler anstelle des dreizeilers..
Re: Traceback (most recent call last) Fehler
Verfasst: Donnerstag 15. September 2011, 13:35
von cofi
Dann solltest du ein paar mehr Angaben fallen lassen: OS, Python-Version und den kompletten Ablauf des Startens.
Re: Traceback (most recent call last) Fehler
Verfasst: Donnerstag 15. September 2011, 13:47
von user1308
Windows 7 32 bit
Python Version 3.2.2
Ich starte das Programm aus der Kommandozeile..
Also Windowstaste, geb dann cmd ein und navigiere dann zum Ordner der Python Datei.. Dann gebe ich den Dateinamen ein und bestätige das.
Ich hab ein ähnliches Programm geschrieben bei dem eine ID übergeben wird und anhand dieser wird anschliessend die dazugehörige pdf datei angezeigt. das funktioniert einwandfrei..
Re: Traceback (most recent call last) Fehler
Verfasst: Donnerstag 15. September 2011, 15:04
von user1308
Ich hab die Variablen umbenannt und es funktioniert nun..
Keine ahnung, was das für ein Fehler war.
viele grüße und danke
