Maison > Article > développement back-end > Comment obtenir les paramètres de ligne de commande en python
Présentation des méthodes Python pour obtenir les paramètres de ligne de commande : module getopt et module argparse.
version python : 2.7
1. module getopt
utilise principalement les fonctions du module :
options, args = getopt.getopt(args, shortopts, longopts=[])
Paramètre args : généralement sys.argv[1 :]. Filtrez sys.argv[0], qui est le nom du script exécuté et n'est pas compté comme paramètre de ligne de commande.
Paramètre shortopts : chaîne d'analyse au format court. Par exemple : "hp:i:", il n'y a pas de deux-points après h, ce qui signifie qu'il n'y a pas de paramètres ; il y a des deux-points après p et i, ce qui signifie qu'il y a des paramètres.
Paramètre longopts : liste de chaînes d'analyse au format long. Par exemple : ["help", "ip=", "port="], il n'y a pas de signe égal après help, ce qui signifie qu'il n'y a pas de paramètres ; il y a deux points après ip et port, ce qui signifie qu'il y a des paramètres.
Les options de valeur de retour sont une liste avec des tuples comme éléments. La forme de chaque tuple est : (chaîne d'option, paramètres supplémentaires), telle que : ('-i', '192.168.0.1')
La valeur de retour args est une liste dont les éléments sont les paramètres qui ne contiennent pas de '-' ou '--'.
Exécutez la commande suivante sur la ligne de commande :
python test_getopt.py -i 192.168.0.1 -p 80 123 a
ou
python test_getopt . py -ip=192.168.0.1 --port=80 123 a
le code test_getopt.py est le suivant :
#encoding=utf-8 import getopt import sys def main(argv): try: options, args = getopt.getopt(argv, "hp:i:", ["help", "ip=", "port="]) except getopt.GetoptError: sys.exit() for option, value in options: if option in ("-h", "--help"): print("help") if option in ("-i", "--ip"): print("ip is: {0}".format(value)) if option in ("-p", "--port"): print("port is: {0}".format(value)) print("error args: {0}".format(args)) if __name__ == '__main__': main(sys.argv[1:])
Les résultats d'exécution sont les suivants :
2. module argparse
Un module standard utilisé pour analyser les options et les paramètres de ligne de commande.
Étapes d'utilisation :
1 : importer argparse #Importer le module
2 : parser = argparse.ArgumentParser() #Créer un objet d'analyse
3 : analyseur .add_argument() #Ajouter les options de ligne de commande et les paramètres utilisés à l'objet
4 : parser.parser_args() #Analyser la ligne de commande
Ensuite, les méthodes ArgumentParser et add_argument seront introduites en détail :
ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparser.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default= Aucun, conflict_handler='error', add_help=True)
Les paramètres ont des valeurs par défaut Lors de l'exécution du programme en raison de paramètres incorrects ou lorsque la méthode parser.print_help() est appelée, ces informations de description seront imprimées. . Généralement, seule la description du paramètre doit être transmise.
add_argument(name ou flags... [, action] [, nargs] [, const] [, default] [, type] [, choix] [, obligatoire] [, aide] [, métavar] [, dest])
Les paramètres communs sont expliqués comme suit :
nom ou drapeaux : nom ou option du paramètre de ligne de commande, tel que -p, --port
action :
Store : Le mode d'action par défaut, stocke la valeur dans la variable spécifiée
Store_const : La valeur stockée est spécifiée dans la partie const du paramètre, souvent utilisée pour implémenter des valeurs non booléennes indicateurs de ligne de commande
store_true/store_false : commutateur booléen. La valeur par défaut de store_true est False Si le commutateur booléen est entré sur la ligne de commande, la valeur est True. L'opposé de store_false
Append : Stocke la valeur dans la liste, ce paramètre peut être réutilisé
Append_const : Stocke la valeur dans la liste, la valeur stockée est spécifiée dans la partie const du paramètre
Nombre : Statistiques Le nombre d'abréviations des paramètres d'entrée
Version : Afficher les informations de version, puis quitter le script
nargs : Le nombre de paramètres de ligne de commande, généralement représenté par des caractères génériques : ? signifie qu'un seul est utilisé, * signifie 0 à plus, + signifie 1 à plus
par défaut : valeur par défaut
type : type de paramètre, la valeur par défaut est le type de chaîne, il peut également être float, Types tels que int et booléen
choix : plage de valeurs d'entrée
obligatoire : La valeur par défaut est False, si True, cela signifie que le paramètre doit être saisi
aide : Invite d'aide pour utiliser Information
dest : Le nom de variable correspondant au paramètre dans le programme, tel que : add_argument("-a", dest="code_name"), utilisez parser.code_name dans le script pour accéder à la valeur de l'option de ligne de commande
L'exemple de code de script test_argparse.py est le suivant :
#encoding=utf-8 import argparse def main(args): print("--address {0}".format(args.code_address)) #args.address会报错,因为指定了dest的值 print("--flag {0}".format(args.flag)) #如果命令行中该参数输入的值不在choices列表中,则报错 print("--port {0}".format(args.port)) #prot的类型为int类型,如果命令行中没有输入该选项则报错 print("-l {0}".format(args.log)) #如果命令行中输入该参数,则该值为True。因为为短格式"-l"指定了别名"--log",所以程序中用args.log来访问 if __name__ == '__main__': parser = argparse.ArgumentParser(usage="it's usage tip.", description="help info.") parser.add_argument("--address", default=80, help="the port number.", dest="code_address") parser.add_argument("--flag", choices=['.txt', '.jpg', '.xml', '.png'], default=".txt", help="the file type") parser.add_argument("--port", type=int, required=True, help="the port number.") parser.add_argument("-l", "--log", default=False, action="store_true", help="active log info.") args = parser.parse_args() main(args)
Exécutez respectivement les commandes suivantes :
python test_argparse.py
python test_argparse.py --port 80
python test_argparse.py --port 80 --flag apk
python test_argparse.py --port 80 -l
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!