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

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

迷茫
Libérer: 2017-03-25 17:11:53
original
1480 Les gens l'ont consulté

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:])
Copier après la connexion

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)
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal