Eingaben über die Konsole lesen mit Python ... Wie?

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.
kikone
User
Beiträge: 24
Registriert: Freitag 30. Januar 2009, 14:24

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Suchst du "raw_input"?

Oder darauf aufbauend (und ganz prmitiv):

Code: Alles auswählen

>>> "spam=42".split("=", 1)
['spam', '42']
Oder meinst du Parameter, die du beim Programmstart übergeben möchtest?
Das Leben ist wie ein Tennisball.
kikone
User
Beiträge: 24
Registriert: Freitag 30. Januar 2009, 14:24

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 ...
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Code: Alles auswählen

In [9]: eingabe=raw_input("Bitte Text eingeben: ")
Bitte Text eingeben: Node01

In [10]: print eingabe
Node01
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das Tutorial hast du aber schon gelesen, oder? Da steht es recht früh drin.
Das Leben ist wie ein Tennisball.
kikone
User
Beiträge: 24
Registriert: Freitag 30. Januar 2009, 14:24

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 :)
kikone
User
Beiträge: 24
Registriert: Freitag 30. Januar 2009, 14:24

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
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

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 :)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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 ....
kikone
User
Beiträge: 24
Registriert: Freitag 30. Januar 2009, 14:24

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? :)
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Code: Alles auswählen

from magic import *
show_select_apps_dialog(folder)
;)
kikone
User
Beiträge: 24
Registriert: Freitag 30. Januar 2009, 14:24

hmm was macht denn das magic? :-S
hier sagt er : no module named magic
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

du solltest dir noch ein paar grundlagen aneignen...
kikone
User
Beiträge: 24
Registriert: Freitag 30. Januar 2009, 14:24

ja stimmt :(
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

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...
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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]
Zuletzt geändert von cofi am Mittwoch 29. April 2009, 16:17, insgesamt 1-mal geändert.
kikone
User
Beiträge: 24
Registriert: Freitag 30. Januar 2009, 14:24

Das geht nicht ... :-(
Syntaxfehler?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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 ;)
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
Antworten