Ich fügte hinzu. Worauf Sie beim Argparse-Test achten sollten.
Verschoben nach hier und aktualisiert.
Ich möchte das Argument eines bestimmten Skripts wie folgt angeben.
Das Ergebnis der Implementierung solcher Spezifikationen mit argparse und der Anzeige mit --help ist wie folgt. Notieren Sie sich diese Implementierung ab dem nächsten Kapitel Schritt für Schritt.
$ ./photosort.py --help
usage: photosort.py [-h] [-d [PATH_ROOT_DST]]
[-e SORT_FILES_EXTENTIONS [SORT_FILES_EXTENTIONS ...]]
[--debug]
path_root_src
This script is ...
positional arguments:
path_root_src Directory path where your taken photo files are
located.
optional arguments:
-h, --help show this help message and exit
-d [PATH_ROOT_DST], --path-root-dst [PATH_ROOT_DST]
Directory path where you want to create date folder
and locate photo files. (default: same as source
directory)
-e SORT_FILES_EXTENTIONS [SORT_FILES_EXTENTIONS ...], --sort-files-extentions SORT_FILES_EXTENTIONS [SORT_FILES_EXTENTIONS ...]
Extentions of file which you want to sort. (default:
jpg)
--debug debug mode if this flag is set (default: False)
Ich denke, dass es für die meisten Anwendungen kein Problem mit anderen Standardeinstellungen als der Beschreibung gibt. Parameter, die Sie normalerweise verwenden würden, wie z. B. add_help (fügen Sie dem Parser die Option -h / –help hinzu), sind voraktiviert.
initialize
parser = argparse.ArgumentParser(description='This script is ...')
Parameter, die auf den Standardeinstellungen belassen werden können, werden ebenfalls angegeben. (Weil es schwierig ist zu wissen, was die Standardeinstellung ist, ohne auf die Hilfe zu schauen)
Der Pfadpfad src muss angegeben werden
Geben Sie im ersten Argument von add_argument den Namen 'path_root_src' ohne-oder-und Keine in nargs an. Dies führt zu einem Fehler "zu wenige Argumente", wenn im Skript keine anderen Argumente als "und" angegeben sind. Wenn nargs auf '?' Setzt und in Kombination mit Parametern wie default und const angegeben wird, kann das Skript fehlerfrei ausgeführt werden.
add_argument
parser.add_argument('path_root_src', \
action='store', \
nargs=None, \
const=None, \
default=None, \
type=str, \
choices=None, \
help='Directory path where your taken photo files are located.', \
metavar=None)
Das erste hier angegebene Argument string'path_root_src 'wird als Attributname des Namespace-Objekts verwendet, das von args = parser.parse_args ()
zurückgegeben wird, das am endgültigen Ende aufgerufen wird.
Das heißt, "/ Users / test / Pictures" wird in args.path_root_src
gespeichert, wenn es wie folgt ausgeführt wird.
$ ./photosort.py /Users/test/Pictures
Die Angabe des dst-Verzeichnispfads ist nicht obligatorisch
Geben Sie im ersten Argument von add_argument und '?' In nargs zwei Arten von Optionszeichenfolgen an.
Dies nimmt nach Möglichkeit ein Argument aus der Befehlszeile und verwendet es als Attributname 'path_root_dst' für das von args = parser.parse_args ()
zurückgegebene Namespace-Objekt und setzt den Wert des Arguments auf dieses Attribut.
Wenn das Optionsargument selbst nicht vorhanden ist (-d selbst ist nicht angegeben), wird der Standardwert übergeben.
Es wird ein optionales Argument angegeben, gefolgt vom Wert von const, wenn keine Befehlszeilenargumente vorhanden sind.
Im folgenden Beispiel sind beide Keine, daher macht es nicht viel Sinn ...
add_argument
parser.add_argument('-d', '--path-root-dst', \
action='store', \
nargs='?', \
const=None, \
default=None, \
type=str, \
choices=None, \
help='Directory path where you want to create date folder and locate photo files. (default: same as source directory)', \
metavar=None)
Ich möchte mehrere Erweiterungen der Zieldatei angeben
Geben Sie im ersten Argument von add_argument und '+' in nargs zwei Arten von Optionszeichenfolgen an. Dies erfordert mindestens ein Befehlszeilenargument, was zu einem Fehler "zu wenig Argument" führt, wenn die Bedingung nicht erfüllt ist. Der obige Fehler tritt jedoch nur auf, wenn -e angegeben wird, das Befehlszeilenargument jedoch nicht angegeben wird. Wenn -e selbst nicht angegeben wird, wird das standardmäßig angegebene [['jpg'] `verwendet und es tritt kein Fehler auf.
add_argument
parser.add_argument('-e', '--sort-files-extentions', \
action='store', \
nargs='+', \
const=None, \
default=['jpg'], \
type=str, \
choices=None, \
help='Extentions of file which you want to sort. (default: jpg)', \
metavar=None)
Normalerweise möchte ich keine Druckanweisungen zum Debuggen in stdout drucken
Wenn ein optionales Argument angegeben ist und Sie einfach möchten, dass es True oder False hat, können Sie dies tun, indem Sie in Aktion'store_true'or'store_false 'angeben. Wenn dieses Skript mit --debug ausgeführt wird, wird True im Attributnamen "args.debug" des Namespace-Objekts gespeichert, das von "args = parser.parse_args ()" zurückgegeben wird, das am endgültigen Ende aufgerufen wird. ..
add_argument
parser.add_argument('--debug', \
action='store_true', \
help='debug mode if this flag is set (default: False)')
Konvertiert die bisher angegebenen Argumente in ein Objekt, weist sie dem Attribut des Namespace-Objekts zu und lässt dieses Objekt zurückgeben. Standardmäßig wird die Argumentzeichenfolge aus sys.argv übernommen, sodass Sie hier im Argument nichts angeben müssen.
parse_args
args = parser.parse_args()
Sie können sehen, dass das Attribut mit dem durch add_argument angegebenen Namen dem von parse_args zurückgegebenen Namespace-Objekt hinzugefügt wurde.
(Pdb) b 112
Breakpoint 1 at /Users/dodo5522/Development/manage_media_data/photosort.py:112
(Pdb) c
> /Users/dodo5522/Development/manage_media_data/photosort.py(112)<module>()
-> args = parser.parse_args()
(Pdb) n
(Pdb) dir(args)
['__class__', '__contains__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_args', '_get_kwargs', 'debug', 'path_root_dst', 'path_root_src', 'sort_files_extentions']
(Pdb) args.debug
(Pdb) print args.debug
False
(Pdb) print args.path_root_dst
/Users/dodo5522/Public
(Pdb) print args.path_root_src
/Users/dodo5522/Pictures
(Pdb) print args.sort_files_extentions
['jpg', 'png', 'mov']
(Pdb)
Recommended Posts