Benutzung von reservierten Woertern als Parameter

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
Maschinenhans
User
Beiträge: 11
Registriert: Donnerstag 14. Juli 2011, 12:23

Donnerstag 14. Juli 2011, 13:14

Hallo an alle,

erst mal vielen Dank fuer dieses Forum. Ich habe hier schon viele Loesungen gefunden.
Jetzt habe ich aber ein Problem, dem ich mit Buechern, Google, diesem Forum und der offiziellen Doku (mein Englisch ist nicht so prall :oops: ) nicht "bei komme".

Folgendes:
Ich schreibe gerade ein Skript, das aus einer Datei Vorlagen liest und daraus iCalendar Dateien generiert, die auch automatisch von einer Kalenderanwendung importiert werden sollen - bei Bedarf. Das ganze laeuft auf der Konsole und ich moechte gerne die Parameter "-i" und "--import" benutzen. Das ueber das Modul argparse. Bei dem Wort "import" haben wir schon das Problem.
Hier ein Minimalbeispiel:

Code: Alles auswählen

#!/usr/bin/env python3

import argparse

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("-i", "--import", action="store_true")
    args = parser.parse_args()

    if args.import:
        # args.i wird nicht angenommen
        print("Option --import gewaehlt")

if __name__ == "__main__":
    main()
Jetzt endlich die Frage:
Gibt es eine Moeglichkeit das reservierte Wort "import" in der if-Verzweigung zu maskieren? Als workaround habe ich "importit" als Parameter gemacht, aber das gefaellt mir nicht.
Vielleicht kann mir jemand einen Tipp geben, wie man das elegant loesen kann. Besser noch eine Adresse, wo es steht?

Vielen Dank im voraus fuer eure Muehe.

Gruss
Maschinenhans
Alles wird gut.
deets

Donnerstag 14. Juli 2011, 13:21

Nein, das kannst du nicht maskieren. Es gibt zwei Wege, das Problem zu loesen:

- du benutzt das argument "dest" fuer add_option, mit dem du dann zB den Namen "import_" angibst. Dann greifst du darauf problemlos zu
- du greifst mittels getattr(opts, "import") auf den Wert zu. Finde ich aber unschoen, weil du lieber einen Weg, optionen zu verarbeiten gehen solltest.
Maschinenhans
User
Beiträge: 11
Registriert: Donnerstag 14. Juli 2011, 12:23

Donnerstag 14. Juli 2011, 17:19

Hallo deets,

genau das habe ich gesucht :D . Vielen Dank fuer die schnelle Hilfe.
Das Argument "dest" fuer add_argument hat das Problem geloest.
Also naechstens genauer die Doku lesen. Das verstehen der originalen Dokumentation faellt mir nur recht schwer :( .

Gruss
Maschinenhans
Alles wird gut.
Antworten