Seite 1 von 1
optparse Dateinamen als Parameter
Verfasst: Freitag 21. März 2014, 12:15
von ulrich1992
Folgendes:
Ein Script soll aufgerufen werden können mit Befehlszeilen a la
Wobei die "Flags" optional sind.
Pflichtparameter ist nur die Datei.
Nun habe ich gelesen, dass es da das optparse-Modul gibt, was wesentlich komfortabler ist, als sys.argv manuell zu parsen.
Allerdings finde ich auf die Schnelle keine Möglichkeit, einen String-Parameter ohne Prefix (a la "--file" oder "-f") angeben zu können.
Re: optparse Dateinamen als Parameter
Verfasst: Freitag 21. März 2014, 12:27
von pillmuncher
optparse ist deprecated seit Python 2.7/3.2. Das ist das erste, was - rot hinterlegt -
in der Doku dazu steht. Da steht auch, dass man statt dessen
argparse nehmen soll. Und in der Doku zu
argparse steht gleich zu Anfang ein Beispiel, das deine Frage beantwortet.
Übrigens gibt es auch
ein Tutorial zu argparse.
Re: optparse Dateinamen als Parameter
Verfasst: Freitag 21. März 2014, 12:40
von mutetella
@ulrich1992:
Verwende
argparse:
Code: Alles auswählen
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--any_flag', action='store_true')
_StoreTrueAction(option_strings=['--any_flag'], dest='any_flag', nargs=0, const=True, default=False, type=None, choices=None, help=None, metavar=None)
>>> parser.add_argument('filename')
_StoreAction(option_strings=[], dest='filename', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--any_flag my_filename.txt'.split())
Namespace(any_flag=True, filename='my_filename.txt')
>>> parser.parse_args('my_filename.txt'.split())
Namespace(any_flag=False, filename='my_filename.txt')
mutetella
Re: optparse Dateinamen als Parameter
Verfasst: Freitag 21. März 2014, 12:42
von ulrich1992
mutetella hat geschrieben:@ulrich1992:
Verwende
argparse:
Code: Alles auswählen
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--any_flag', action='store_true')
_StoreTrueAction(option_strings=['--any_flag'], dest='any_flag', nargs=0, const=True, default=False, type=None, choices=None, help=None, metavar=None)
>>> parser.add_argument('filename')
_StoreAction(option_strings=[], dest='filename', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args('--any_flag my_filename.txt'.split())
Namespace(any_flag=True, filename='my_filename.txt')
>>> parser.parse_args('my_filename.txt'.split())
Namespace(any_flag=False, filename='my_filename.txt')
mutetella
Okay danke!
Ich hätte nur mal in die offizielle Python-Doku gucken müssen.
