Seite 1 von 1

Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 13:34
von The Hit-Man
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?

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 13:37
von .robert
Man könnte da starten...

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 13:49
von The Hit-Man
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.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 13:55
von Pekh
Den Hinweis auf das Modul, das dir diese Arbeit abnimmt, hast du dort aber schon gesehen?

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 13:57
von cofi
Wenn man Python < 2.7 einsetzt, muss man allerdings auf `optparse` zurueckgreifen (falls man `argparse` nicht als zusaetzliches Modul installieren will)

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 13:58
von The Hit-Man
Das mit den regulären Ausdrücken? Wenn ja, das wollte ich eigentlich vermeiden, das zu nutzen.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 13:59
von cofi
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.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 14:03
von The Hit-Man
aha, dann wird es wohl argparse, sein.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 14:35
von The Hit-Man
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.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 15:20
von The Hit-Man
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.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 15:30
von cofi

Code: Alles auswählen

parser.add_argument('-e', '--endless', action='store_true')
sollte es tun.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 19:36
von The Hit-Man
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?

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 19:57
von EyDu
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.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 20:14
von cofi
Auch noch nuetzlich:

Code: Alles auswählen

no_argparse = sys.version_info < (2, 7)

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 22:06
von Leonidas
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.

Re: Parameterübergabe an Pythonprogramm

Verfasst: Freitag 27. August 2010, 22:16
von cofi
Das ist wahr. Der bessere Weg ist wohl:

Code: Alles auswählen

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