Kommandozeilenargumente

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Kommandozeilenargumente

    Hallo,

    bin jetzt auch einigermaßen in Python bewandert ;) Habe auch schon einige kleine Skripte geschrieben und würde nun gerne wissen, wie man am besten Komandozeilenargumente behandelt, also Kommandozeilenargumente jeder Art, wie bei
    script.py install --option=choice -a
    Und ich weiß nicht, ob das möglich ist, auch eventuell wie in der bash mit -x ANGABE also in dem Schema. Da gibt es doch eigene intergrierte Klasse, gkaub ich, aber ich weiß nicht recht, wie man nun damit umgeht usw.
    Kann mir vielleicht jemand helfen?

    Gruß,
    David
  • ah, cool. Die kannte ich nicht, obwohl getopt wohl überall Standard ist.

    Aber dank der tollen Python Doku erklärt der Name ja bereits alles ;)
    http://docs.python.org/lib/module-getopt.html

    Dort findest du zumindest ein Beispiel zur Nutzung.
    Und weil Python so viel Spaß macht, hab ich das Beispiel mal ein bisschen erweitert:

    Quellcode

    1. import getopt, sys
    2. def usage():
    3. print "so benutzt man das programm: --condition=foo --testing --output-file abc.def a1 a2"
    4. def main():
    5. try:
    6. opts, args = getopt.getopt(sys.argv[1:], '', ['condition=', 'output-file=', 'testing'])
    7. except getopt.GetoptError:
    8. usage() # print help information and exit:
    9. if len(args) <> 2:
    10. usage()
    11. #options
    12. cond = None
    13. testing = False
    14. output = None
    15. for o, a in opts:
    16. if o in ("--condition", "-c"):
    17. cond = a
    18. if o in ("--testing", "-t"):
    19. testing = True
    20. if o in ("--output-file", "-o"):
    21. output = a
    22. print "mache was spannendes mit ", args[0], "und", args[1]
    23. if __name__ == "__main__":
    24. #just for testing START
    25. sys.argv.append("--condition=foo")
    26. sys.argv.append("--testing")
    27. sys.argv.append("--output-file")
    28. sys.argv.append("abc.def")
    29. sys.argv.append("a1")
    30. sys.argv.append("a2")
    31. #just for testing END
    32. main()
    Alles anzeigen


    Die Signatur sieht eben so aus: getopt( args, options[, long_options])
    args ist das Eingabetupel. options sind die Sachen die zu Argumenten werden. In meinem Beispiel sollen die Argumente nicht als Parameter übergeben werden, sondern werden einfach angehängt. Daher ist der String options bei mir leer.
    Und long options sind die Restparameter die optional dabei sind.