Python, argparse y los parámetros de línea de comandos

1. ¿Qué es los argumentos de línea de comandos?

Parámetros de línea de comandos se dan para marcar el programa / script en tiempo de ejecución. Contienen información adicional sobre el programa, por lo que se puede realizar.
No todos los programas tienen un argumento de línea de comandos, ya que no todos los programas que necesitan. En la secuencia de comandos de Python mi artículo en el blog hace un amplio uso de argumentos de línea de comandos, incluso se puede decir que el 98% de los artículos del blog están utilizando los parámetros de línea de comandos.

2. ¿Por qué usamos los argumentos de línea de comandos?

Como se describió anteriormente, en los parámetros de línea de comandos en tiempo de ejecución proporciona más información sobre el programa.
Esto nos permite la inmediata disponibilidad de diferentes insumos para un programa sin cambiar el código .
Por analogía argumentos similares parámetros de línea de comandos, si se sabe cómo declarar y llamar a una función, entonces cuando se descubrió cómo utilizar los parámetros de línea de comandos, se sentirá como en casa en una variedad de lenguajes de programación.
Dado que esta es una visión por ordenador y el blog de procesamiento de imágenes, asi que aquí hay una serie de parámetros para ver una ruta de la imagen de vídeo o caminos.
En el caso en que la profundidad del aprendizaje, o la ruta modelo verán conteo de puntos de tiempo como argumentos de línea de comandos.
En este artículo, vamos a aprender Python paquete argparse por dos guiones.

biblioteca argparse 3.Python

En primer lugar, vamos a nombrar un nuevo 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"]))

Añadir un parámetro único, -n o -nombre, taquigrafía se debe especificar (-n) y una versión normal (-name), ya sea signo se puede utilizar en la línea de comandos. Como se describió anteriormente, -name es un parámetro necesario requiere = True.
-Help es un parámetro opcional, un terminal de entrada:

python simple_example.py --help

Imprimir el siguiente mensaje:

 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

Introduzca el siguiente comando para ejecutar la secuencia de comandos:

python simple_example.py --name 哲少

Imprimir los siguientes resultados:

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

Mientras no hay un nombre de espacio, se mostrará correctamente en la salida.

4. Parámetros de línea de comandos de análisis de Python

El segundo shape_counter.py script:

# 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)

Ejecutar el script:

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

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Con diferentes parámetros para ejecutar el script de nuevo:

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

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Por último, cabe destacar que una "trampa", a veces en este blog, mi bandera de línea de comandos con el parámetro "-" (guión), por ejemplo -Características-db. Cuando el valor del parámetro contiene rastreo, es necesario utilizar "_" (subrayado), esto es un poco confuso y un poco de problemas, por ejemplo, el siguiente código:

 # 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...")

Debido a la biblioteca argparse durante el análisis, Python reemplazar el tablero con un guión bajo.

Publicado siete artículos originales · ganado elogios 8 · visitas 128

Supongo que te gusta

Origin blog.csdn.net/qq_42878057/article/details/104772120
Recomendado
Clasificación