29 Stimmen

Python IndentationError: unerwartete Einrückung

Hier ist mein Code ... Ich bin immer Einrückung Fehler, aber ich weiß nicht, warum es auftritt.

->

# loop
while d <= end_date:
    # print d.strftime("%Y%m%d")
    fecha = d.strftime("%Y%m%d")
    # set url
    url = 'http://www.wpemergencia.omie.es//datosPub/marginalpdbc/marginalpdbc_' + fecha + '.1'
    # Descargamos fichero
    response = urllib2.urlopen(url)
    # Abrimos fichero
    output = open(fname,'wb')
    # Escribimos fichero
    output.write(response.read())
    # Cerramos y guardamos fichero
    output.close()
    # fecha++
    d += delta

50voto

unutbu Punkte 769083

Führen Sie Ihr Programm mit

python -t script.py

Sie werden gewarnt, wenn Sie Tabulatoren und Leerzeichen gemischt haben.

Auf *nix-Systemen können Sie sehen, wo die Registerkarten sind, indem Sie

cat -A script.py

und Sie können Tabulatoren automatisch in 4 Leerzeichen umwandeln mit dem Befehl

expand -t 4 script.py > fixed_script.py

PS. Verwenden Sie beim Programmieren einen Programmiereditor (z. B. emacs, vim) und kein Textverarbeitungsprogramm. Mit einem Programmiereditor werden Sie dieses Problem nicht haben.

PPS. Für emacs-Benutzer, M-x whitespace-mode zeigt die gleichen Informationen wie cat -A aus einem emacs-Puffer heraus!

9voto

user2287824 Punkte 91

Finde alle Tabulatoren und ersetze sie durch 4 Leerzeichen in Notepad ++ Es hat funktioniert.

8voto

ilstam Punkte 1393

Prüfen Sie, ob Sie Tabulatoren und Leerzeichen gemischt haben, denn das ist eine häufige Ursache für Einrückungsfehler.

3voto

Don Question Punkte 10658

Sie können Tabulatoren und Leerzeichen nicht zur Kennzeichnung verwenden. Am besten ist es, alle Tabulatoren in Leerzeichen umzuwandeln.

Wie kann man das beheben? Löschen Sie einfach alle Leerzeichen/Tabs vor jeder Zeile und wandeln Sie sie einheitlich entweder in Tabulatoren ODER Leerzeichen um, aber mischen Sie sie nicht. Beste Lösung: Aktivieren Sie in Ihrem Editor die Option, automatisch alle Tabulatoren in Leerzeichen umzuwandeln.

Beachten Sie auch, dass Ihr eigentliches Problem in den Zeilen vor diesem Block liegen könnte, und Python hier den Fehler auslöst, weil eine führende ungültige Einrückung nicht zu den folgenden Bezeichnungen passt!

0voto

Kopieren Sie einfach Ihr Skript und setzen Sie unter """ Ihren gesamten Code """ ...

geben Sie diese Zeile in einer Variablen an wie,

a = """ your entire code """
print a.replace('    ','    ') # first 4 spaces tab second four space from space bar

print a.replace('here please press tab button it will insert some space"," here simply press space bar four times")
# here we replacing tab space by four char space as per pep 8 style guide..

Führen Sie nun diesen Code in Sublime mit ctrl+b aus. Nun wird der eingerückte Code in der Konsole ausgegeben. das war's

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X