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?
korrekter code aber invalid syntax
- 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?
Könntest die Umstände vllt etwas genauer beschreiben? Hattest du gerade eine vollständige Zeile, wenn das auftrat, oder warst du mittendrin?
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.mazman hat geschrieben:... kann meistens nur gelöst werden, wenn ich eine neue Zeile einfüge oder einfach ein # hinter dem code ...
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
Code: Alles auswählen
...
>>> c_mod = c.replace('\t', ' ')
...
- 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
Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei