Seite 1 von 1
Unterschiede beim ausführen unter Windows und Linux
Verfasst: Samstag 31. August 2013, 17:15
von audacity363
Guten Tag
Ich hab folgendes Problem:
Ich müsste einen String einlesen und diesen dann splitten um ihn weiterverarbeiten zu können. An sich keine große Sache:
Unter Windows funktioniert das auch ohne Probleme aber wenn ich es auf einem Linux System ausführe kommt die Fehlermeldung:
Eingabe: test\test1
Traceback (most recent call last):
File "slash_split.py", line 8, in <module>
eingabe = str(input("Eingabe: ")).split('\\',2)
File "<string>", line 1
test\test1
^
SyntaxError: unexpected character after line continuation character
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Samstag 31. August 2013, 17:23
von cofi
Code: Alles auswählen
$ python
Python 2.7.5+ (default, Aug 4 2013, 10:07:17)
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> str(raw_input("in: ")).split('\\', 2)
in: test\test1
['test', 'test1']
>>> str(input("in: ")).split('\\', 2)
in: test\\test1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
test\\test1
^
SyntaxError: unexpected character after line continuation character
Code: Alles auswählen
$ python3
Python 3.3.2+ (default, Aug 4 2013, 15:50:24)
[GCC 4.8.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> str(input("in: ")).split('\\', 2)
in: test\\test1
['test', '', 'test1']
Kann es sein, dass du unter Windows ein Python3 benutzt und unter Linux ein Python2?
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Sonntag 1. September 2013, 13:11
von audacity363
Also laut
ist Version 2.7.3 installiert. Wenn ich dann aber
versuche sagt er das Version 3.2.3 schon installiert wurde.
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Sonntag 1. September 2013, 14:04
von BlackJack
@audacity363: Dann ist beides installiert. Und natürlich kann man nicht beide über den gleichen Programmnamen aufrufen. Python 3 heisst dann üblicherweise python3.
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Sonntag 1. September 2013, 14:06
von albertus
audacity363 hat geschrieben:Guten Tag
Ich hab folgendes Problem:
Ich müsste einen String einlesen und diesen dann splitten um ihn weiterverarbeiten zu können. An sich keine große Sache:
Unter Windows funktioniert das auch ohne Probleme aber wenn ich es auf einem Linux System ausführe kommt die Fehlermeldung:
Eingabe: test\test1
Traceback (most recent call last):
File "slash_split.py", line 8, in <module>
eingabe = str(input("Eingabe: ")).split('\\',2)
File "<string>", line 1
test\test1
^
SyntaxError: unexpected character after line continuation character
Hallo,
hier mal ein schnell Schuss:
unter Python 2.7.X müsste das hier funktionieren: eingabe = raw_input("Eingabe: ").split('\\',2)
unter Python 3.X.X müsste das hier funktionieren: eingabe = input("Eingabe: ").split('\\',2)
Erklärung: unter Python 2.7.X verhält sich die Funktion input interpretierend. Das heißt es will die übergebenen Daten verarbeiten:
Beispiel:
Code: Alles auswählen
print(input("A:"))
A:"foo\nNewline"
foo
Newline
print(raw_input("A:"))
A:foo\nNewline
foo\nNewline
Dieses verhalten ist gefährlich und deshalb sollte man unter Python 2.X nur raw_input verwenden. Bei Python 3.X verhält sich input wie raw_input unter Python 2.X.
Ich hoffe ich konnte Helfen.
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Montag 2. September 2013, 17:13
von audacity363
Okey. Sorry das ich mich erst jetzt melde aber irgendwie vergesse ich die Threads immer wenn keine Mail kommt

Ja habe es dann einfach nochmal mit python3 probiert und es hat ohne Probleme geklappt.
Eine Frage zu den Version Unterschiede habe ich noch (Thema Threads):
Habe einen Server(liegt in einer zweiten Datei) erstellt der auf eine Android App hört. An sich funkt er nur währenddessen soll noch was anderes laufen.
Im Netz hab ich diese Funktion gefunden:
Code: Alles auswählen
import thread, Android #So heißt die Datei
thread.start_new_thread(Android.Android_Server())
#weiteres Programm
Dort gibt er mir aber die Meldung Undefined variable from import: start_new_thread aus. Muss ich das unter 3.x.x jetzt mit dem Modul threading machen? Fände dies ein wenig umständlich...
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Montag 2. September 2013, 17:22
von BlackJack
@audacity363: Das hättest Du auch unter Python 2 schon mit dem `threading`-Modul machen sollen. Die Dokumentation vom `thread`-Modul weist schon seit einer halben Ewigkeit darauf hin, dass man besser `threading` nehmen sollte. In Python 3 ist dann konsequenterweise aus der öffentlichen API verschwunden.
Edit: Ich sehe das auch nichts umständliches dran. Der Aufruf ist halt geringfügig anders.
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Montag 2. September 2013, 17:55
von audacity363
@BlackJack Bin erst seit 3.x.x dabei. Mhh ich habe das jetzt so verstanden das eine eigene Klasse usw. erstellt werden muss. Irgendwie erinnert mich das ganze an Java... Na ja Egal dann mach ich es halt so. Danke für die schnellen und guten Antworten. Habe das Forum das zu schätzen gelernt.
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Montag 2. September 2013, 18:18
von audacity363
Ist es normal das die prints in einem Thread nicht ausgegeben werden?
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Montag 2. September 2013, 18:19
von BlackJack
@audacity363: Du musst keine eigene Klasse schreiben — es gibt doch schon `threading.Thread`. Schau Dir einfach mal an was man *der* Klasse beim erstellen an Argumenten übergeben kann. Damit wird das nur ein Methodenaufruf mehr als beim `thread`-Modul.
`print()` in einem Thread wird ganz normal auf `sys.stdout` ausgegeben wie im impliziten Hauptthread auch.
Re: Unterschiede beim ausführen unter Windows und Linux
Verfasst: Montag 2. September 2013, 18:45
von audacity363
mhh okey.. vll. sollte ich mal meine Lektüre ändern. hat jetzt ohne Anstand geklappt danke.