Parameterübergabe an Pythonprogramm

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.
Antworten
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Ich würde gerne meinem Pythonscript ein paar Parameter beim starten aus der Konsole mitgeben, das sollte so aus sehen:

Code: Alles auswählen

python meinprogramm.py -param1 10 -param2 5
Mein Frage ist nun, es könnte ja auch der param2 an erster Stelle stehen, oder vielleicht gar nicht angegeben sein. Ich glaube man nennt so etwas aus switche. Wie könnte man das in Python anstellen?
.robert
User
Beiträge: 274
Registriert: Mittwoch 25. April 2007, 17:59

Man könnte da starten...
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Wie ich die Parameter auslese, weiß ich. Jedoch weiß ich gerade nicht genau, wie ich die dann sortiere, also wenn auf ein mal der zweite Parameter als erstes eingetippt wird. Oder das der erste zum Beispiel ganz fehlt und nur der zweite angegeben wurde.
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Den Hinweis auf das Modul, das dir diese Arbeit abnimmt, hast du dort aber schon gesehen?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Wenn man Python < 2.7 einsetzt, muss man allerdings auf `optparse` zurueckgreifen (falls man `argparse` nicht als zusaetzliches Modul installieren will)
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Das mit den regulären Ausdrücken? Wenn ja, das wollte ich eigentlich vermeiden, das zu nutzen.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

The Hit-Man hat geschrieben:Das mit den regulären Ausdrücken? Wenn ja, das wollte ich eigentlich vermeiden, das zu nutzen.
Ich glaube du hast den falschen Abschnitt gelesen.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

aha, dann wird es wohl argparse, sein.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

ja, ich komme, da nen bischen ins schwitzen, will ja nur ein zwei Args auslesen. Mein Versuch sieht so aus. So ganz habe ich das Prinzip noch nicht verstanden.

Code: Alles auswählen

	parser = argparse.ArgumentParser(description='Einstellungen zum kopieren.')
	parser.add_argument('--stunde', type=int, default=0, 
		help='addieren der angegebenen Stunden zur lokalzeit ')

	args = parser.parse_args()
Wie kann ich denn jetzt --stunden auslesen wenn es überhaupt gesetzt ist.

EDIT:
habs dann mit

Code: Alles auswählen

print (args.stunde)
auslesen können.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

jetzt stehe ich schon wieder auf dem Schlauch. Das mit der Parameterübergabe --stunden 10, habe ich hinbekommen. jetzt brauche ich aber noch eine Option, mit -e. Wenn -e gesetzt ist, soll das Programm eine Endlosschleife starten. Ich habe es nur so weit hin bekommen, das ich die Option mit -e 1 starten kann. Allerdings wäre es eleganter, einfach -e anzugeben, oder ganz einfach weg zu lassen. Das bekomme ich irgendwie nicht hin.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Code: Alles auswählen

parser.add_argument('-e', '--endless', action='store_true')
sollte es tun.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Wenn man Python < 2.7 einsetzt, muss man allerdings auf `optparse` zurueckgreifen (falls man `argparse` nicht als zusaetzliches Modul installieren will)
ja, mußte ich zusätzlich auch noch :( aber habe jetzt alles hin bekommen.

EDIT:
wo bekomme ich eigentlich gewahr, welche standart-imports ich bei den python-versionen nutzen kann?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

The Hit-Man hat geschrieben:wo bekomme ich eigentlich gewahr, welche standart-imports ich bei den python-versionen nutzen kann?
Die vorhandenen Module stehen in der Dokumentation zur jeweiligen Python-Version.
Das Leben ist wie ein Tennisball.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Auch noch nuetzlich:

Code: Alles auswählen

no_argparse = sys.version_info < (2, 7)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

cofi hat geschrieben:Auch noch nuetzlich:

Code: Alles auswählen

no_argparse = sys.version_info < (2, 7)
Was nicht funktioniert wenn man ``argparse`` in Python 2.6 nachinstalliert. Also: sowas bitte nicht machen. Version-Probing sollte man generell eher vermeiden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das ist wahr. Der bessere Weg ist wohl:

Code: Alles auswählen

try:
    import argparse
except ImportError:
    ...
else:
    setup_argparse()
Antworten