Parámetros de línea de comandos de Python3

Python3 基础语法Sintaxis básica de Python3

Python proporcionagetoptmódulo para obtener los parámetros de la línea de comandos.

$ python test.py arg1 arg2 arg3

En Python también se puede usarsysdesys.argvpara obtener los parámetros de la línea de comandos:

  • sys.argves la lista de parámetros de la línea de comandos.

  • len(sys.argv)Cuenta el número de parámetros de la línea de comandos.

Nota:sys.argv[0]Representa el nombre del script.

Ejemplo

El código del archivo test.py es el siguiente:

Ejemplo

#!/usr/bin/python3

import sys

print ('El número de parámetros es:', len(sys.argv), 'parámetro.')
print ('Lista de parámetros:', str(sys.argv))
print ('Nombre del script:', str(sys.argv[0]))

Al ejecutar el código anterior, el resultado es:

$ python3 test.py arg1 arg2 arg3
参数个数为: 4 个参数。
参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
脚本名: test.py

Módulo getopt

El módulo getopt es un módulo especialmente diseñado para manejar parámetros de línea de comandos, se utiliza para obtener opciones y parámetros de la línea de comandos, es decir,sys.argv. Las opciones de línea de comandos hacen que los parámetros del programa sean más flexibles. Admite el modo de opciones cortas-y el modo de opciones largas--。

Este módulo proporciona dos métodos y un manejo de excepciones para analizar los argumentos de la línea de comandos.

Método getopt.getopt

El método getopt.getopt se utiliza para analizar la lista de argumentos de la línea de comandos, su sintaxis es la siguiente:

getopt.getopt(args, options[, long_options])

Descripción de los parámetros del método:

  • args: La lista de argumentos de línea de comandos a analizar.

  • options: Se define en formato de cadena,optionslos dos puntos posteriores:indican que esa opción debe tener un parámetro adicional; sin dos puntos significa que la opción no lleva parámetro adicional.

  • long_options: Se define en formato de lista,long_optionsel signo igual posterior=indica que si se establece esa opción, debe tener un parámetro adicional; de lo contrario, no se añade parámetro.

El valor de retorno de este método consta de dos elementos: el primero es(option, value)una lista de tuplas. El segundo es la lista de argumentos, que contiene aquellos sin-o--parámetros.

A continuación definimos una función site() y luego ingresamos el nombre del sitio por línea de comandosnamey la URLurl, se pueden usar abreviaturasnyu:

Ejemplo

import sys
import getopt
 
 
def site():
    name = None
    url = None
 
    argv = sys.argv[1:]
 
    try:
        opts, args = getopt.getopt(argv, "n:u:")  # Modo de opción corta
     
    except:
        print("Error")
 
    for opt, arg in opts:
        if opt in ['-n']:
            name = arg
        elif opt in ['-u']:
            url = arg
     
 
    print( name +" " + url)
 
site()

Para probar el código anterior, ingrese en la línea de comandos:

python3 test.py -n EJEMPLO -u www.example.com

El resultado es:

EJEMPLO www.example.com

El siguiente ejemplo demuestra el uso del modo de opciones largas:

Ejemplo

import sys
import getopt
 
def site():
    name = None
    url = None
 
    argv = sys.argv[1:]
 
    try:
        opts, args = getopt.getopt(argv, "n:u:",  
                                   ["name=",
                                    "url="])  # Modo de opción larga
     
    except:
        print("Error")
 
    for opt, arg in opts:
        if opt in ['-n', '--name']:
            name = arg
        elif opt in ['-u', '--url']:
            url = arg
     
 
    print( name + " " + url)
 
site()

Para probar el código anterior, ingrese en la línea de comandos:

python3 test.py -n EJEMPLO -u www.example.com

El resultado es:

EJEMPLO www.example.com

Otro método es getopt.gnu_getopt, que se usa en pocas ocasiones; aquí no se explicará en detalle.


Exception getopt.GetoptError

Esta excepción se activa cuando no se encuentra la lista de argumentos o cuando el parámetro requerido por una opción está vacío.

El parámetro de la excepción es una cadena que indica la causa del error. El atributomsgyoptes el mensaje de error de la opción correspondiente.

Ejemplo

Supongamos que creamos un script así, podemos pasar dos nombres de archivo al archivo de script mediante la línea de comandos, y también usamos otra opción para ver el uso del script. El método de uso del script es el siguiente:

usage: test.py -i <inputfile> -o <outputfile>

El código del archivo test.py es el siguiente:

Ejemplo

#!/usr/bin/python3

import sys, getopt

def main(argv):
   inputfile = ''
   outputfile = ''
   try:
      opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
   except getopt.GetoptError:
      print ('test.py -i <inputfile> -o <outputfile>')
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print ('test.py -i <inputfile> -o <outputfile>')
         sys.exit()
      elif opt in ("-i", "--ifile"):
         inputfile = arg
      elif opt in ("-o", "--ofile"):
         outputfile = arg
   print ('El archivo de entrada es:', inputfile)
   print ('El archivo de salida es:', outputfile)

if __name__ == "__main__":
   main(sys.argv[1:])

Al ejecutar el código anterior, el resultado es:

$ python3 test.py -h
usage: test.py -i <inputfile> -o <outputfile>

$ python3 test.py -i inputfile -o outputfile
输入的文件为: inputfile
输出的文件为: outputfile

Python3 基础语法Sintaxis básica de Python3

Otras extensiones