¡Viva Argparse! ¡Los muertos de Argparse!

En Python utilizan argpase en vez de getopts/getopt (dependiendo del lenguaje en el que estéis pensando). Es maravilloso hasta que te das cuenta de que su formateo de los mensajes de ayuda es una mieeerda. (Bueno, a lo mejor no es tan mierda.)

Un ejemplo:

"prog"

import argparse

class CustomParser(argparse.ArgumentParser):
	def error(self, a):
		print("Error: ";+a)
		help()
		exit(2)

def help():
	print("I'm a help message")
	
parser = CustomParser(add_help=False)
parser.add_argument('-h', '--help', action='store_true')
args = parser.parse_args()

if args.help is True: # THE SOURCE OF EVIL
	print("Next will print the help message")
	help()
	exit(1)

Las líneas 7 y 19 son para distinguir los casos, no sirven para otra cosa. Sé que el error tiene que estar en el “if”, pero no soy capaz de encontrarlo.

python prog

Imprime en pantalla el mensaje de ayuda, AKA mensaje de error + uso, de ahí la clase CustomParser.

python prog --help

Imprime exactamente lo mismo que el comando anterior.

python prog --help 0

Muestra lo que esperaba en el comando anterior. Lo que no entiendo es si action=’store_true’ indica que “–help” sea un flag (o eso dicen una y otra vez en Stack Overflow), por qué necesita un parámetro (sea 0 o cualquier otra cosa).

EDIT: No se qué ha pasado, pero hoy antes de he ejecutado el mismo código y ha funcionado a la perfección. Por algo no me pillaba action=’store_true’. Ni idea qué ha pasado. Se ve que llevaba demasiadas horas delante del ordenador. El lado positivo es que aquí tenéis un código ejemplo para tener mensajes personalizados de ayuda con argparse.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s