Parámetros de línea de comandos 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
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 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 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
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 输出的文件为: outputfileOtras extensiones
Sintaxis básica de Python3