Seite 1 von 1

(gelöst)Optparse richtig anwenden?

Verfasst: Dienstag 19. August 2008, 14:39
von Schaf220
Hallo liebe Community,
ich komme gerade nicht weiter mit dem Modul Optparse.
Ich habe mir da mal ein Beispielskript herruntergeladen um es zu testen,
doch ich bekomme immer den Fehler aus der else Anweisung, wenn
ich es starte("Es werden exakt zwei Argumente erwartet").
So sieht das Skript jetzt aus:

Code: Alles auswählen

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-o", "--operation", dest="operation")
(optionen, args) = parser.parse_args()
if len(args) != 2:
    parser.error("Es werden exakt zwei Argumente erwartet")
calc = {
       "plus" : lambda a, b: a + b,
       "minus" : lambda a, b: a - b,
       "mal" : lambda a, b: a * b,
       "geteilt" : lambda a, b: a / b,
       None : lambda a, b: a + b
       }
op = optionen.operation
if op in calc:
    print "Ergebnis:", calc[op](float(args[0]), float(args[1]))
else:
    parser.error("%s ist keine Operation" % op)
Was muss ich noch hinzufügen oder verbessern, das ich nicht immer
die Fehlermeldung bekomme, sondern mit der Eingabe der Kommandozeilenschaltern beginnen kann?
So soll es später aufgerufen werden:
calc.py -o plus 7 5
calc.py -o minus 13 29
calc.py -o mal 4 11
calc.py -o geteilt 3 2

Re: Optparse richtig anwenden?

Verfasst: Dienstag 19. August 2008, 14:54
von Rebecca
Schaf220 hat geschrieben: So soll es später aufgerufen werden:
calc.py -o plus 7 5
calc.py -o minus 13 29
calc.py -o mal 4 11
calc.py -o geteilt 3 2
Was heisst spaeter? Du musst es schon jetzt so aufrufen. Bei mir klappt das.

Verfasst: Dienstag 19. August 2008, 14:58
von Schaf220
Wenn ich das Skript so starte wie es jetzt ist, dann bekomme ich
sofort die Fehlermeldung! Das Programm beendet sich dann sofort.

Verfasst: Dienstag 19. August 2008, 14:58
von snafu
Klappt bei mir einwandfrei:

Code: Alles auswählen

sebastian@hardy ~> python calc.py -o plus 7 5
Ergebnis: 12.0
sebastian@hardy ~> python calc.py -o minus 13 29
Ergebnis: -16.0
sebastian@hardy ~> python calc.py -o mal 4 11
Ergebnis: 44.0
sebastian@hardy ~> python calc.py -o geteilt 3 2
Ergebnis: 1.5

Verfasst: Dienstag 19. August 2008, 15:02
von Schaf220
Habt ihr den Code genau so wie er daist oder noch was dazu gefügt?
Bei mir kommt nämlich sofort die Fehlermeldung ich komme erst gar nicht zum eingeben =(

Verfasst: Dienstag 19. August 2008, 15:04
von Hyperion
Schaf220 hat geschrieben: Bei mir kommt nämlich sofort die Fehlermeldung ich komme erst gar nicht zum eingeben =(
Ach die meinst Du ... na dann ist ja alles klar ;-)

SCNR

Verfasst: Dienstag 19. August 2008, 15:27
von Rebecca
Schaf220 hat geschrieben:Habt ihr den Code genau so wie er daist oder noch was dazu gefügt?
Bei mir kommt nämlich sofort die Fehlermeldung ich komme erst gar nicht zum eingeben =(
:?: Du darfst erst Enter druecken, nachdem die komplette Zeile mit den ganzen Parametern eingegeben wurde... Nicht das Programm ausfuehren und dann die Parameter eingeben wollen.

Verfasst: Dienstag 19. August 2008, 15:51
von cofi
Hyperion hat geschrieben:
Schaf220 hat geschrieben: Bei mir kommt nämlich sofort die Fehlermeldung ich komme erst gar nicht zum eingeben =(
Ach die meinst Du ... na dann ist ja alles klar ;-)

SCNR
Der Punkt ist, wenn du nicht beschreibst was passiert, kann man dir hier nicht helfen ... Kristallkugeln gehn so leicht kaputt :/ Und teuer sind die auch :O

Verfasst: Dienstag 19. August 2008, 15:54
von Schaf220
hmm ok soweit so gut das hab ich verstanden is mir grad klar geworden,
das alles gemeinsam auf zu rufen ist ja auch nur logisch =)
Jetzt tut sich folgendes Problem auf die Konsole meckert jetzt rumm das der Befehl python nicht erkannt wird obwohl ich das Verzeichnis "C:\Python25"
in die Umgebungsvariablen zu Path hinzu gefügt habe.
Was muss ich noch einstellen unter Vista 64 Bit?

Verfasst: Dienstag 19. August 2008, 16:01
von Hyperion
Liegt denn die python.exe da auch drin?

Verfasst: Dienstag 19. August 2008, 16:01
von Schaf220
So vielen vielen Dank an alle!
Jetzt geht alles in Path war vor dem "C:\Python 25" ein "%",
das habe ich eben entfernt und jetzt geht es wieder.=)

Re: (gelöst)Optparse richtig anwenden?

Verfasst: Dienstag 19. August 2008, 18:10
von audax

Code: Alles auswählen

import operator as op

calc = {
       "plus" : op.add
       "minus" : lambda a, b : a -b 
       "mal" : op.mul
       "geteilt" : op.div
       None : op.add
       }

Verfasst: Dienstag 19. August 2008, 18:44
von Leonidas
audax, magst du ``operator.sub`` nicht?

Verfasst: Dienstag 19. August 2008, 18:49
von audax
Habs übersehen, hab gerade ne Soße am kochen :D

Verfasst: Samstag 23. August 2008, 11:09
von Y0Gi
Made my day! :D