Seite 1 von 1

korrekter code aber invalid syntax

Verfasst: Samstag 28. Juni 2008, 14:22
von mazman
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?

Verfasst: Samstag 28. Juni 2008, 14:32
von cofi
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?

Verfasst: Samstag 28. Juni 2008, 14:55
von Sr4l
Beim durch das kopieren hast du vielleicht Tabs in dein Script geholt.

Sobald du Tabs und Leerzeichen mischt meckern die meisten IDEs.

Re: korrekter code aber invalid syntax

Verfasst: Sonntag 29. Juni 2008, 00:56
von Masaru
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<<

Verfasst: Sonntag 29. Juni 2008, 10:57
von cofi
Noch ne kleine Verständnisfrage: Wirft deine IDE die Meldung aus oder macht das der Interpreter?

Verfasst: Montag 30. Juni 2008, 08:29
von Rebecca
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.