Seite 1 von 2
Eingaben über die Konsole lesen mit Python ... Wie?
Verfasst: Montag 27. April 2009, 10:12
von kikone
Hallo liebe Forum-User,
Ich möchte mit Python den User dazu bringen bestimmte Variablen über die Konsole eingeben zu können. Diese Variablen sollen dann im Code später aufgerufen und weiterverwendet werden ...
Kann mir jemand sagen wie man das macht?
Danke schon mal
Kikone
Verfasst: Montag 27. April 2009, 10:32
von EyDu
Suchst du "raw_input"?
Oder darauf aufbauend (und ganz prmitiv):
Oder meinst du Parameter, die du beim Programmstart übergeben möchtest?
Verfasst: Montag 27. April 2009, 11:01
von kikone
Ich hab das mal mit Java programmiert .. das ging mit stdin.readline () ...
So in etwa:
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader stdin = new BufferedReader(in);
String eingabe;
System.out.print("Bitte Text eingeben: ");
eingabe = stdin.readLine();
System.out.print(eingabe);
Genau das Gleiche möchte ich jetzt mit Python machen. Also das der Benutzer ein Wort eingibt z.B. "Node01" und dass mit dieser Variablen das Skript dann weiterlaufen kann ...
Verfasst: Montag 27. April 2009, 11:07
von Dill
Code: Alles auswählen
In [9]: eingabe=raw_input("Bitte Text eingeben: ")
Bitte Text eingeben: Node01
In [10]: print eingabe
Node01
Verfasst: Montag 27. April 2009, 11:23
von EyDu
Das
Tutorial hast du aber schon gelesen, oder? Da steht es recht früh drin.
Verfasst: Montag 27. April 2009, 11:25
von kikone
Dill hat geschrieben:Code: Alles auswählen
In [9]: eingabe=raw_input("Bitte Text eingeben: ")
Bitte Text eingeben: Node01
In [10]: print eingabe
Node01
Merci

Verfasst: Montag 27. April 2009, 12:14
von kikone
Jetzt steh ich vor einer weiteren Hürde ... hat hier jemand eine Idee?
Und zwar:
Ich hab hier ein skript, welches eine Applikation für einen Anwendungsserver installiert ... das skript funktioniert soweit ... jedoch möchte ich jetzt noch eine benutzereingabe hinzufügen ... wie man das macht weiss ich auch ... nur die pfade sind so ewig lang ...
Hat hier jemand eine Idee wie man das programmiertechnisch lösen könnte?
Ein Pfad zu einer installierbaren App sieht z.B. so aus ...
C:\IBM\WebSphere\AppServer\installableApps\query.ear
Verfasst: Montag 27. April 2009, 12:27
von Dill
wenn das eine konsolenanwendung werden soll könntest du dir eine autovervollständigung basteln, ähnlich wie in der windows shell wenn autocompletion char gesetzt ist.
das ist nicht weiter problematisch, aber dann solltest du doch erstmal das tutorial durcharbeiten.
oder machst nen file-select-popup mit qt oder wx oder so...
da hab ich aber kein plan von

Verfasst: Montag 27. April 2009, 12:27
von cofi
Da gibts natürlich mehrere Möglichkeiten
Die einfachste wäre wohl das Skript mit dem Pfad als Parameter aufzurufen (`sys.argv`) da sollte es auch ne Pfadvervollstädigung selbst durch die Eingabeaufforderung geben - wenn ich mich da recht erinner.
Andere Möglichkeit wärs das Verzeichnis vorzugeben und die Apps dann mit einem Menü aufzulisten aus dem der Benutzer dann wählt.
Und und und ....
Verfasst: Montag 27. April 2009, 12:28
von kikone
cofi hat geschrieben:
Andere Möglichkeit wärs das Verzeichnis vorzugeben und die Apps dann mit einem Menü aufzulisten aus dem der Benutzer dann wählt.
Das wäre genau was ich brauchen würde ....

Mit welcher Funktion geht das?

Verfasst: Montag 27. April 2009, 12:31
von Dill
Verfasst: Montag 27. April 2009, 12:35
von kikone
hmm was macht denn das magic? :-S
hier sagt er : no module named magic
Verfasst: Montag 27. April 2009, 12:44
von Dill
du solltest dir noch ein paar grundlagen aneignen...
Verfasst: Montag 27. April 2009, 12:45
von kikone
ja stimmt

Verfasst: Montag 27. April 2009, 12:46
von Dill
arbeite doch erstmal das tutorial durch. und dann komm nochmal her.
dann kannst du dir mit der GUI-programmierung weiterhelfen lassen.
aber so wäre das doch nur gemurkse, macht ja auch kein spass dann...
Verfasst: Montag 27. April 2009, 12:55
von cofi
Code: Alles auswählen
app_path = r"C:\IBM\WebSphere\AppServer\installableApps"
choices = dict(enumerate(os.listdir(app_path))
#choices visualisiern
choice = int(raw_input("Nummer?"))
app = choices[choice]
Verfasst: Mittwoch 29. April 2009, 15:36
von kikone
Das geht nicht ...
Syntaxfehler?
Verfasst: Mittwoch 29. April 2009, 16:17
von cofi
Erm ja, ein Raw-String akzeptiert keinen Backslash am Ende.
Und ich dachte schon das Source-Highlighting im Forum wär einfach nur mal wieder bockig ...
Sorry, war ungetestet

Verfasst: Mittwoch 29. April 2009, 16:18
von b.esser-wisser
Das ist der (hier unnötige) "\" als letztes Zeichen im sog. Raw-string, mach den einfach weg (rawstrings dürfen nicht mit einer ungeraden Anzahl \-s enden)).
Und benutze os.path.join() um Dateipfade zusammenzusetzen
Verfasst: Mittwoch 29. April 2009, 16:24
von cofi
b.esser-wisser hat geschrieben:Und benutze os.path.join() um Dateipfade zusammenzusetzen
Wobei das in dem Fall eher verschleiernd wirkt.
Solange das eine Konstante ist, die man als Teil der Einstellungen betrachten kann macht ein Raw-String mehr Sinn, weil man den nicht dechiffrieren muss, um an den Pfad zu gelangen

Aber ansonsten hast du natürlich recht.