Il existe argparse en tant que bibliothèque standard qui prend en charge le traitement lié aux arguments des scripts Python. Avec argparse, vous pouvez ajouter des arguments valides avec des contrôles de validation. Cette fois, je décrirai comment spécifier l'argument de "il existe une plage valide de valeurs numériques" avec argparse.
argparse est une bibliothèque Python qui analyse les options et arguments de ligne de commande. Il est disponible depuis Python 2.7 et est inclus en tant que bibliothèque standard (vous n'avez donc pas à vous soucier d'utiliser pip et vous n'avez pas à ajouter "Veuillez mettre cette bibliothèque" lors de sa distribution à d'autres utilisateurs).
Documentation officielle Python Argparse https://docs.python.jp/3/library/argparse.html
Outre argparse, il existe les bibliothèques Python suivantes qui effectuent ce type d'analyse.
Analyseur d'options que Pythonista connaît http://qiita.com/petitviolet/items/aad73a24f41315f78ee4
Pour inclure le traitement de l'analyse des arguments à l'aide d'argparse, implémentez comme suit. (Ce qui suit ajoute l'option de valeur entière "-s".)
Exemple de vérification d'argument.py
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='LightsOut Solver')
parser.add_argument('-s', type=int, help='LightsOut Size')
ʻSi vous spécifiez string ou int dans l'argument type
de ArgumentParser # add_argument`, il vérifiera si la valeur spécifiée comme argument peut être traitée comme ce type.
Afin de spécifier une "plage de tolérance" comme condition pour ajouter des arguments comme décrit ci-dessus, il est possible de saisir une valeur indiquant la plage de tolérance dans l'argument choice
de ʻArgumentParser # add_argument`.
Exemple de vérification d'argument2.py
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='LightsOut Solver')
parser.add_argument('-s', type=int, choice=range(1,6), help='LightsOut Size')
Cependant, seules les «choses qui peuvent être représentées dans un tableau» peuvent recevoir une valeur solide pour ce choix. En d'autres termes, seul un nombre fini de plages peut être réduit. Pour spécifier un nombre infini de plages (par exemple, "entier de 2 ou plus" ou "nombre réel de 0 ou plus et 1 ou moins"), "fonction pour juger si la valeur est acceptable" au lieu de "tableau pour spécifier la plage" C'est OK si vous spécifiez. Vous trouverez ci-dessous l'exemple de code qui spécifie «un entier supérieur ou égal à 2» comme plage.
Exemple de vérification d'argument3.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')
En outre, comment décrire l'exemple de projet généré à l'aide de ce code. https://github.com/LyricalMaestro/lightsout-solver-python
Si vous utilisez pleinement la méthode de vérification, vous pouvez utiliser argparse pour effectuer une vérification de validation très flexible. Utilisez-le pour créer d'excellents scripts.
Documentation officielle Python Argparse https://docs.python.jp/3/library/argparse.html
Analyseur d'options que Pythonista connaît http://qiita.com/petitviolet/items/aad73a24f41315f78ee4
Recommended Posts