Maison  >  Article  >  développement back-end  >  Comment obtenir les paramètres de ligne de commande en python

Comment obtenir les paramètres de ligne de commande en python

迷茫
迷茫original
2017-03-25 17:11:531327parcourir

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 :

Comment obtenir les paramètres de ligne de commande en python

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn