Heim >Backend-Entwicklung >Python-Tutorial >Verwenden von Python argparse: Umgang mit Befehlszeilenargumenten

Verwenden von Python argparse: Umgang mit Befehlszeilenargumenten

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBnach vorne
2023-04-22 15:28:181255Durchsuche

    1. Vorwort

    argparse ist ein Befehlszeilenparameter-Parsing-Paket für Python. Wenn der Code häufig Parameter ändern muss , Einfach zu verwenden, die Hauptverwendung besteht darin, die Parameter, die Sie ändern möchten, in die Befehlszeile einzugeben.

    2. Gängige Frameworks für die Verwendung von 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)

    Wie oben ist get_parser() eine der in diesem Artikel vorgestellten Verwendungsmethoden. Diese Python-Datei heißt python_argparse_test1.py. wobei #🎜🎜 #

    parser = argparse.ArgumentParser(description="pytorch unet training") zum Erstellen eines Parserobjekts verwendet wird

    add_argument() zum Hinzufügen von Parametern verwendet wird

    args = parser In .parse_args() ruft parse_args() die analysierten Parameter ab

    1. Holen Sie sich die Parameterliste

    Wenn Python python_argparse_test1.py eingegeben wird Drucken Sie in der Befehlszeile die von args erhaltenen Parameter aus, um Folgendes zu erhalten:

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

    #🎜 🎜# stellt die von diesem Parameterparser analysierte Parameterliste dar.

    2. Hilfeinformationen abrufen

    Geben Sie python python_argparse_test1.py -h oder python python_argparse_test1.py --help ein, um Informationen anzuzeigen , wo die Verwendung seine Verwendung anzeigt, Pytorch Unet Training Für die Beschreibung beim Erstellen des Objekts finden Sie im Folgenden die Informationen und die Verwendung jedes Parameters

    Verwenden von Python argparse: Umgang mit Befehlszeilenargumenten3. Parameter in der Befehlszeile ändern

    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)

    Befehlszeileneingabe: python python_argparse_test1.py --data_path Desktop --num_classer 4, das Ergebnis ist wie folgt:

    data_path: Desktop# 🎜🎜#

    num_classes: 4

    #🎜🎜 #Sie können sehen, dass die Parameter über die Befehlszeile geändert wurden

    4 Die Verwendung von '_' und "__. "

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

    Befehlszeileneingabe python python_argparse_test1.py -b 10 - -batch_size 20, dann wird ein Fehler gemeldet:

    #🎜 🎜#Das liegt daran, dass das System bei gleichzeitiger Existenz von „_“ und „__“ letzteren standardmäßig als Parameter verwendet. Name

    Ändern Sie den obigen Code in: Verwenden von Python argparse: Umgang mit Befehlszeilenargumenten

    if __name__ =='__main__':
    
        parser = get_parser()
    
        args = parser.parse_args()
    
        print("--batch_size: ",args.batch_size)
    #🎜 🎜#Aber die Befehlszeile ist nicht betroffen. Führen Sie den Befehl python python_argparse_test1.py -b 10 weiter aus und erhalten Sie:

    #🎜🎜 #--batch_size: 10

    5 Die Verwendung vom Typ

    Typ erzwingt die Konvertierung der eingegebenen Befehlszeilenzeichen in den Typ vom Typ

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

    Befehlszeileneingabe: python python_argparse_test1.py --batch_size '10' erhält :

    --batch_size type:

    6.erforderlich: verwenden, um anzugeben, ob dieser Parameter bereitgestellt werden muss

    parser.add_argument("--num_classes", default=1, type=int, required=True)
    # 🎜🎜#Wenn Sie den Befehl python python_argparse_test1.py

    eingeben, wird ein Fehler gemeldet, der darauf hinweist, dass der Parameter tatsächlich erforderlich ist Erforderlich: --num_classes

    7.choices Auswahlparameter

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

    Wenn Sie den Befehl ausführen: python python_argparse_test1.py -arch cnn

    Das wird Einen Fehler melden

    python_argparse_test1.py: Fehler: Argument -arch: ungültige Wahl: 'cnn' (wählen Sie aus 'alexnet', 'vgg')

    Das obige ist der detaillierte Inhalt vonVerwenden von Python argparse: Umgang mit Befehlszeilenargumenten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen