Python, argparse et les paramètres de ligne de commande

1. Qu'est-ce que les arguments de ligne de commande?

paramètres de ligne de commande sont donnés pour marquer le programme / script lors de l' exécution. Ils contiennent des informations supplémentaires sur le programme, de sorte que vous pouvez effectuer.
Tous les programmes ont un argument de ligne de commande, car tous les programmes ont besoin. Dans le script Python mon article de blog utilise beaucoup d'arguments de ligne de commande peut même dire que 98% des articles de blog utilisent les paramètres de ligne de commande.

2. Pourquoi utilisons-nous les arguments de ligne de commande?

Comme décrit ci - dessus, dans les paramètres de ligne de commande d' exécution fournit plus d' informations sur le programme.
Cela nous permet la disponibilité immédiate des entrées différentes pour un programme sans changer le code .
Par analogie des arguments similaires en ligne de commande paramètres, si vous savez comment déclarer et appeler une fonction, puis quand découvert comment utiliser les paramètres de ligne de commande, vous vous sentirez immédiatement à l' aise dans une variété de langages de programmation.
Comme il est une vision informatique et un blog de traitement d'image, voici donc un certain nombre de paramètres pour voir un chemin ou les chemins d'image vidéo.
Dans le cas où la profondeur de l' apprentissage, ou le chemin modèle verra le nombre de points de temps que les arguments de ligne de commande.
Dans cet article, nous allons apprendre ensemble Python argparse par deux scripts.

3.Python bibliothèque argparse

Tout d'abord, laissez-nous nommer un nouveau simple_example.py script:

# 导入argparse包
import argparse

# 构造参数并解析参数
ap = argparse.ArgumentParser()
ap.add_argument("-n", "--name", required=True,
    help="name of the user")
args = vars(ap.parse_args())

# 打印交互信息
print("Hi there {}, it's nice to meet you!".format(args["name"]))

Ajout d' un paramètre unique -n ou -nom, un raccourci doit être spécifié (-n) et une version régulière (-name), que ce soit signe peut être utilisé sur la ligne de commande. Comme décrit ci - dessus, -nom est un paramètre requis requis = True.
-Help est un paramètre facultatif, une borne d'entrée:

python simple_example.py --help

Imprimez le message suivant:

 usage: simple_example.py [-h] -n NAME

    optional arguments:
      -h, --help            show this help message and exit
      -n NAME, --name NAME  name of the user

Entrez la commande suivante pour exécuter le script:

python simple_example.py --name 哲少

Imprimez les résultats suivants:

 Hi there 哲少, it's nice to meet you!

Tant qu'il n'y a pas de nom de l'espace, il affiche correctement dans la sortie.

4. paramètres de ligne de commande Python parse

Le second script shape_counter.py:

# USAGE
# python shape_counter.py --input input_01.png --output output_01.png
# python shape_counter.py --input input_02.png --output output_02.png

# 导入必要的软件包
import argparse
import imutils
import cv2

# 构造参数并解析参数
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--input", required=True,
    help="path to input image")
ap.add_argument("-o", "--output", required=True,
    help="path to output image")
args = vars(ap.parse_args())

# 从磁盘加载图像
image = cv2.imread(args["input"])

# 将图像转换为灰度图像、高斯平滑、阈值求取并二值化
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (5,5), 0)
thresh = cv2.threshold(blurred, 60, 255, cv2.THRESH_BINARY)[1]

# 从图像中提取轮廓
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
    cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)

# 在输入的图像上循环绘制轮廓
for c in cnts:
    cv2.drawContours(image, [c], -1, (0, 0, 255), 2)

# 显示图像中形状的总数
text = "I found {} total shapes".format(len(cnts))
cv2.putText(image, text, (10, 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5,
        (0, 0, 255), 2)

# 保存输出图像到硬盘
cv2.imwrite(args["output"], image)

Exécutez le script:

  python shape_counter.py --input input_01.png --output output_01.png

Insérer ici l'image Description
Insérer ici l'image Description
Avec des paramètres différents pour exécuter à nouveau le script:

 python shape_counter.py --input input_02.png --output output_02.png

Insérer ici l'image Description
Insérer ici l'image Description
Enfin, notez qu'un « piège », parfois sur ce blog, mon drapeau de paramètre de ligne de commande avec le « - » (tiret), par exemple -Caractéristiques-db. Lorsque la valeur du paramètre contient rampent, vous devez utiliser « _ » (underscore), cela est un peu confus et un peu de mal, par exemple, le code suivant:

 # construct the argument parser and parse the arguments
    ap = argparse.ArgumentParser()
    ap.add_argument("-d", "--dataset", required=True, help="Path to the directory of indexed images")
    ap.add_argument("-f", "--features-db", required=True, help="Path to the features database")
    ap.add_argument("-c", "--codebook", required=True, help="Path to the codebook")
    ap.add_argument("-o", "--output", required=True, help="Path to output directory")
    args = vars(ap.parse_args())
    
    # load the codebook and open the features database
    vocab = pickle.loads(open(args["codebook"], "rb").read())
    featuresDB = h5py.File(args["features_db"], mode="r")
    print("[INFO] starting distance computations...")

Parce que la bibliothèque argparse lors de l'analyse syntaxique, Python remplacer le tableau de bord avec un trait de soulignement.

Publié sept articles originaux · a gagné les éloges 8 · vues 128

Je suppose que tu aimes

Origine blog.csdn.net/qq_42878057/article/details/104772120
conseillé
Classement