korrekter code aber invalid syntax

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mazman
User
Beiträge: 22
Registriert: Mittwoch 12. März 2008, 15:39

Hallo zusammen,

wenn ich mit der WING IDE arbeite bekomme ich zum Teil eine "invalid syntax" Meldung an bestimmten Stellen im Code. Der Code ist definitiv korrekt und diese Fehlermeldungen treten auch nicht immer auf, sondern unregelmäßig und teilweise an verschiedenen Stellen im Code. Der Fehler ist nicht reproduzierbar und kann meistens nur gelöst werden, wenn ich eine neue Zeile einfüge oder einfach ein # hinter dem code.

Kann mir das jemand erklären oder habt Ihr evtl. das gleiche Problem?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das hört sich für mich so an, als würde die IDE deinen Code automatisch mit Static Code Analyzern wie bspw pylint checken.

Könntest die Umstände vllt etwas genauer beschreiben? Hattest du gerade eine vollständige Zeile, wenn das auftrat, oder warst du mittendrin?
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beim durch das kopieren hast du vielleicht Tabs in dein Script geholt.

Sobald du Tabs und Leerzeichen mischt meckern die meisten IDEs.
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

mazman hat geschrieben:... kann meistens nur gelöst werden, wenn ich eine neue Zeile einfüge oder einfach ein # hinter dem code ...
Das Problem habe ich bisher nur auf einigen *nix Systemen gehabt, auf denen ich ein Python-Skript laufen lies, welches auf einer Windows Kiste geschrieben wurde.

Dadurch wurde \r\n von Windows-Editor für Zeilenumbrüche verwendet, was dem *nix nicht wirklich schmeckte.

Habe ich die Datei dann mit einem dortigen Editor geöffnet und z.B. ein Kommentar ans Ende der Zeile (oder einen Umbruch) eigenfügt, so wurde natürlich da hinter ein Unix-spezifischer Zeilenumbruch \n gesetzt ... und es lief alles wunderbar.

Mein Tipp: Alle \r\n Zeilenumbrüche gegen \n austauschen. Das geht relativ einfach mit Python indem man die Interpreter-Konsole aufruft und folgendes ausführt:

Code: Alles auswählen

>>> f = open('pfad_zur_skriptdatei.py')
>>> c = f.read()
>>> f.close()    # nun ist der Inhalt in der Variable 'c' eingelesen
>>> c_mod = c.replace('\r\n', '\n') # in 'c_mod' wird nun der Inhalt abgelegt, jedoch mit ausgetauschten Umbrüchen
>>> f = open('pfad_zur_skriptdatei.py', 'w')
>>> f.write(c_mod)
>>> f.close() # nun ist der modifizierte Inhalt in der ursprünglichen Datei abgelegt
Eine ähnliche Vorgehensweise kann man machen, um "Tabs" (\t) gegen 4'er Spaces auszustauchen.

Code: Alles auswählen

...
>>> c_mod = c.replace('\t', '    ')
...
>>Masaru<<
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Noch ne kleine Verständnisfrage: Wirft deine IDE die Meldung aus oder macht das der Interpreter?
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Unter Linuxen gibt's die Programme fromdos und todos (auch als dos2unix und unix2dos bekannt). Bei Debian z.B. befinden die sich im Paket tofrodos.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Antworten