Es gibt Argparse als Standardbibliothek, die die argumentbezogene Verarbeitung von Python-Skripten unterstützt. Mit argparse können Sie gültige Argumente mit Validierungsprüfungen hinzufügen. Dieses Mal werde ich beschreiben, wie das Argument "Es gibt einen gültigen Bereich numerischer Werte" mit argparse angegeben wird.
argparse ist eine Python-Bibliothek, die Befehlszeilenoptionen und -argumente analysiert. Es ist seit Python 2.7 verfügbar und als Standardbibliothek enthalten (Sie müssen sich also nicht die Mühe machen, pip zu verwenden, und Sie müssen nicht "Bitte setzen Sie diese Bibliothek ein" hinzufügen, wenn Sie es an andere Benutzer verteilen).
Offizielle Python-Dokumentation argparse https://docs.python.jp/3/library/argparse.html
Neben argparse gibt es die folgenden Python-Bibliotheken, die diese Art der Analyse durchführen.
Optionsparser, den Pythonista kennt http://qiita.com/petitviolet/items/aad73a24f41315f78ee4
Implementieren Sie Folgendes, um die Verarbeitung der Argumentanalyse mit argparse einzuschließen. (Im Folgenden wird die Ganzzahlwertoption "-s" hinzugefügt.)
Beispiel für die Argumentprüfung.py
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='LightsOut Solver')
parser.add_argument('-s', type=int, help='LightsOut Size')
Wenn Sie im Argument type
von ArgumentParser # add_argument
string oder int angeben, wird geprüft, ob der als Argument angegebene Wert als dieser Typ behandelt werden kann.
Um "Toleranzbereich" als Bedingung für das Hinzufügen von Argumenten wie oben beschrieben anzugeben, ist es in Ordnung, einen Wert, der den Toleranzbereich angibt, in das Argument "Auswahl" von "ArgumentParser # add_argument" einzugeben.
Argumentprüfung sample2.py
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='LightsOut Solver')
parser.add_argument('-s', type=int, choice=range(1,6), help='LightsOut Size')
Sie können für diese Auswahl jedoch nur dann einen festen Wert angeben, wenn er als Array dargestellt werden kann. Mit anderen Worten kann nur eine endliche Anzahl von Bereichen eingegrenzt werden. Um eine unendliche Anzahl von Bereichen anzugeben (z. B. "Ganzzahl von 2 oder mehr" oder "reelle Zahl von 0 oder mehr und 1 oder weniger"), können Sie mit "Funktion beurteilen, ob der Wert akzeptabel ist" anstelle von "Array zum Angeben des Bereichs". Es ist in Ordnung, wenn Sie angeben. Unten finden Sie den Beispielcode, der als Bereich "eine Ganzzahl größer oder gleich 2" angibt.
Argumentprüfung sample3.py
class range_check(object):
def __init__(self, low_limit=None, high_limit=None, vtype="integer"):
self.min = low_limit
self.max = high_limit
self.type = vtype
def __contains__(self, val):
ret = True
if self.min is not None:
ret = ret and (val >= self.min)
if self.max is not None:
ret = ret and (val <= self.max)
return ret
def __iter__(self):
low = self.min
if low is None:
low = "-inf"
high = self.max
if high is None:
high = "+inf"
L1 = self.type
L2 = " {} <= x <= {}".format(low, high)
return iter((L1, L2))
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='LightsOut Solver')
parser.add_argument('-s', type=int, choices=range_check(low_limit=2), help='LightsOut Size')
Außerdem wird beschrieben, wie das mit diesem Code erstellte Beispielprojekt beschrieben wird. https://github.com/LyricalMaestro/lightsout-solver-python
Wenn Sie die Prüfmethode vollständig nutzen, können Sie mit argparse eine hochflexible Validierungsprüfung durchführen. Verwenden Sie es, um großartige Skripte zu erstellen.
Offizielle Python-Dokumentation argparse https://docs.python.jp/3/library/argparse.html
Optionsparser, den Pythonista kennt http://qiita.com/petitviolet/items/aad73a24f41315f78ee4
Recommended Posts