Maison  >  Article  >  développement back-end  >  Utilisation de Python argparse : comment gérer les arguments de ligne de commande

Utilisation de Python argparse : comment gérer les arguments de ligne de commande

WBOY
WBOYavant
2023-04-22 15:28:181159parcourir

    1. Introduction

    argparse est un package d'analyse de paramètres de ligne de commande pour Python. Il est pratique à utiliser lorsque le code doit modifier fréquemment les paramètres. L'utilisation principale est de saisir les paramètres que vous souhaitez modifier sur la commande. doubler.

    2. À propos des frameworks courants pour l'utilisation d'argparse

    import argparse
    
    def get_parser():
    
        # argparse.ArgumentParser生成argparse对象 description为描述信息,当在命令行输入需要显示帮助信息时,会显示
    
        parser = argparse.ArgumentParser(description="pytorch unet training")
    
        # 路径参数设置 help为参数的帮助信息
    
        parser.add_argument("--data_path", default="./", help="DRIVE root")
    
        # 预测类别数量 type如果不指定需要输入的是str类型
    
        parser.add_argument("--num_classes", default=1, type=int)
    
        # 指定设备使用
    
        parser.add_argument("--device", default="cuda", help="training device")
    
        # 指定batch size大小 "-b", "--batch_size"表示两个都可以在命令行使用
    
        parser.add_argument("-b", "--batch_size", default=4, type=int)
    
        return parser
    
    if __name__ =='__main__':
    
        parser = get_parser()
    
        args = parser.parse_args()
    
        print(args)

    Comme mentionné ci-dessus, get_parser() fait partie des méthodes d'utilisation présentées dans cet article. Le nom de ce fichier python est python_argparse_test1.py, où

    parser = argparse. ArgumentParser(description="pytorch unet training" ) est utilisé pour créer un objet analyseur

    add_argument() est utilisé pour ajouter des paramètres

    args = parser.parse_args() dans parse_args() pour obtenir les paramètres analysés

    1. la liste des paramètres

    Lorsque la ligne de commande entre python python_argparse_test1.py , imprimez les paramètres obtenus par args et obtenez :

    Namespace(batch_size=4, data_path='./', device='cuda', num_classes=1)

    indique la liste des paramètres analysés par cet analyseur de paramètres

    2. Obtenez des informations d'aide

    Entrez python python_argparse_test1.py -h ou python python_argparse_test1.py --help pour afficher les informations, où l'utilisation montre son utilisation, la formation pytorch unet est la description lors de la création de l'objet, et ci-dessous se trouvent les informations et l'utilisation de chaque paramètre

    Utilisation de Python argparse : comment gérer les arguments de ligne de commande

    3. Paramètres de modification de la ligne de commande

    import argparse
    
    def get_parser():
    
        # argparse.ArgumentParser生成argparse对象 description为描述信息,当在命令行输入需要显示帮助信息时,会显示
    
        parser = argparse.ArgumentParser(description="pytorch unet training")
    
        # 路径参数设置 help为参数的帮助信息 default为默认参数
    
        parser.add_argument("--data_path", default="./", help="DRIVE root")
    
        # 预测类别数量 type如果不指定需要输入的是str类型
    
        parser.add_argument("--num_classes", default=1, type=int)
    
        # 指定设备使用
    
        parser.add_argument("--device", default="cuda", help="training device")
    
        # 指定batch size大小 "-b", "--batch_size"表示两个都可以在命令行使用
    
        parser.add_argument("-b", "--batch_size", default=4, type=int)
    
        return parser
    
    if __name__ =='__main__':
    
        parser = get_parser()
    
        args = parser.parse_args()
    
        print("data_path: ",args.data_path)
    
        print("num_classes: ", args.num_classes)

    Entrée de la ligne de commande : python python_argparse_test1.py --data_path Desktop --num_classer 4, les résultats sont comme suit :

    data_path : Desktop

    num_classes : 4

    Vous pouvez voir à travers La ligne de commande a en effet modifié les paramètres

    4 L'utilisation de '_' et "__"

    if __name__ =='__main__':
    
        parser = get_parser()
    
        args = parser.parse_args()
    
        print("-b: ",args.b)
    
        print("--batch_size: ", args.batch_size)

    Les entrées de ligne de commande python python_argparse_test1. .py -b 10 --batch_size 20, et une erreur sera signalée :

    Utilisation de Python argparse : comment gérer les arguments de ligne de commande

    En effet, lorsque '_' et '__' existent en même temps, le système utilise par défaut ce dernier comme nom de paramètre

    Changez le code ci-dessus en :

    if __name__ =='__main__':
    
        parser = get_parser()
    
        args = parser.parse_args()
    
        print("--batch_size: ",args.batch_size)

    Mais la ligne de commande n'est pas affectée, continuez à exécuter la commande python python_argparse_test1.py -b 10 et obtenez :

    --batch_size : 10

    5 Type utilisation

    type will. forcer la conversion des caractères de ligne de commande d'entrée en type de type

    if __name__ =='__main__':
    
        parser = get_parser()
    
        args = parser.parse_args()
    
        print("--batch_size type: ",type(args.batch_size))

    Entrée de ligne de commande : python python_argparse_test1.py --batch_size '10' obtient :

    --batch_size type :

    6.required : Utilisé pour indiquer si ce paramètre doit être fourni

    parser.add_argument("--num_classes", default=1, type=int, required=True)

    Si vous entrez la commande python python_argparse_test1.py

    Cela signalera une erreur indiquant que les paramètres sont effectivement requis

    python_argparse_test1.py : erreur : ce qui suit les arguments sont requis : --num_classes

    7.choicesSelect paramètres

    parser.add_argument('-arch', required=True, choices=['alexnet', 'vgg'])

    Si vous exécutez la commande : python python_argparse_test1.py -arch cnn

    Cela signalera une erreur

    python_argparse_test1.py : erreur : argument -arch : choix invalide : 'cnn' (choisissez parmi 'alexnet', 'vgg')

    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:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer