[PYTHON] Fügen Sie "%" in die Argparse-Hilfe ein, um zu sterben

Angenommen, Sie erstellen ein Python-Skript wie das folgende.

import argparse

parser = argparse.ArgumentParser(description='')
parser.add_argument('--zoom',
    action='store',
    type=float,
    default=1.0,
    help="Expansionsrate(%)")
args = parser.parse_args()

print("zoom is {}".format(args.zoom))

Dies kann normal erfolgen,

$ python hoge.py --zoom 2.0
zoom is 2.0

Ich erhalte einen Wertefehler, wenn ich versuche, Hilfe anzuzeigen.

$ python hoge.py -h
Traceback (most recent call last):
  File "hoge.py", line 9, in <module>
    args = parser.parse_args()
  File "C:\Python37\lib\argparse.py", line 1749, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "C:\Python37\lib\argparse.py", line 1781, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "C:\Python37\lib\argparse.py", line 1987, in _parse_known_args
    start_index = consume_optional(start_index)
  File "C:\Python37\lib\argparse.py", line 1927, in consume_optional
    take_action(action, args, option_string)
  File "C:\Python37\lib\argparse.py", line 1855, in take_action
    action(self, namespace, argument_values, option_string)
  File "C:\Python37\lib\argparse.py", line 1037, in __call__
    parser.print_help()
  File "C:\Python37\lib\argparse.py", line 2474, in print_help
    self._print_message(self.format_help(), file)
  File "C:\Python37\lib\argparse.py", line 2458, in format_help
    return formatter.format_help()
  File "C:\Python37\lib\argparse.py", line 284, in format_help
    help = self._root_section.format_help()
  File "C:\Python37\lib\argparse.py", line 215, in format_help
    item_help = join([func(*args) for func, args in self.items])
  File "C:\Python37\lib\argparse.py", line 215, in <listcomp>
    item_help = join([func(*args) for func, args in self.items])
  File "C:\Python37\lib\argparse.py", line 215, in format_help
    item_help = join([func(*args) for func, args in self.items])
  File "C:\Python37\lib\argparse.py", line 215, in <listcomp>
    item_help = join([func(*args) for func, args in self.items])
  File "C:\Python37\lib\argparse.py", line 525, in _format_action
    help_text = self._expand_help(action)
  File "C:\Python37\lib\argparse.py", line 614, in _expand_help
    return self._get_help_string(action) % params
ValueError: unsupported format character ')' (0x29) at index 5

Wie Sie am Ende der Fehlermeldung sehen können, ist die Ausgabezeichenfolge wie folgt formatiert: "return self._get_help_string (action)% params". Es scheint, dass unbeabsichtigtes Parsen durchgeführt wird, wenn "%" enthalten ist.

Die Problemumgehung besteht darin, die Verwendung von "%" wie unten gezeigt zu vermeiden.

import argparse

parser = argparse.ArgumentParser(description='')
parser.add_argument('--zoom',
    action='store',
    type=float,
    default=1.0,
-    help="Expansionsrate(%)")
+    help="Expansionsrate(percent)")
args = parser.parse_args()

print("zoom is {}".format(args.zoom))

Alternativ können Sie mit %% entkommen.

-    help="Expansionsrate(%)")
+    help="Expansionsrate(%%)")

Es kam heraus.

$ python hoge.py -h
usage: hoge.py [-h] [--zoom ZOOM]

optional arguments:
  -h, --help   show this help message and exit
  --Zoom ZOOM-Vergrößerung(percent)
$ python hoge.py -h
usage: hoge.py [-h] [--zoom ZOOM]

optional arguments:
  -h, --help   show this help message and exit
  --Zoom ZOOM-Vergrößerung(%)

Recommended Posts

Fügen Sie "%" in die Argparse-Hilfe ein, um zu sterben
Registrieren Sie Funktionsargumente automatisch in argparse in Python
So erhalten Sie Hilfe in einer interaktiven Shell
Versuchen Sie, das Modell des maschinellen Lernens in das Python-Paket aufzunehmen
Covector, um in Funktion zu denken
So löschen Sie stdout in Python
Fügen Sie das GitHub-Repository in die Datei resources.txt ein
Portierung von Argparse zu Hydra
Melden Sie sich auf der Website in Python an
Wie benutzt man Python Argparse?
Sprechen mit Python [Text zu Sprache]
Wie man in Python entwickelt
Post an Slack in Python