[Python-es] Dudilla con el main

Chema Cortes chemacortes en wanadoo.es
Lun Mayo 27 12:10:30 CEST 2002


La contestación era para Luis Miguel, que decía que no le era suficiente
comprobar el número de argumentos de entrada en su programa. El módulo
'getopt'
está pensado para procesar las "opciones" en la línea de comandos. Por
ejemplo,
podíamos haber hecho que el código tuviera como argumentos:

$ python mvchk.py -o Vodaphone 666606060

Y en el código:

if __name__=="__main__":
import sys,getopt
opts=getopt.getopt(sys.argv[1:],"o:",["operadora="])
....

Siguiendo el ejemplo, tendríamos en opts:
([('-o', 'Vodaphone')], ['666606060'])

Para saber si nos ha pasado bien el número de móvil:

if len(opts[1])!=1 or not opts[1][0].isdigit():
Raise TypeError("No me has dado un número de móvil")
numero=opts[1][0]
if len(opts[0]>0:
operadora=opts[0][1]
chk=["no","si"][mvchk(numero)==operadora]
print "El número %s %s es de %s" % (numero,chk,operadora)
else:
operadora=mvchk(numero)
print "El número %s es de %s" % (numero,operadora)


En fin, que cada cuál mejore el código a su antojo.

NOTA1: Si os complica mucho el ver ["no","si"][mvchk(numero)==operadora],
cambiar la línea por :

if mvchk(numero)==operadora:
chk="si"
else:
chk="no"

(Era un modo de emular el operador ternario de C a?b:c)

NOTA2: El mismo código también se puede invocar como:

$ python mvchk.py --operadora=Vodaphone 666606060


Saludos,
--
Chema Cortes (chemacortes en wanadoo.es) | LinuxUser#142755 - SuSE Linux 8.0
ZARALINUX http://www.zaralinux.org | La ignorancia se apodera de quien
PYTANDO http://pytando.sf.net | se contenta con lo que sabe



--------- Original message --------
From: "Attila Saorin" <mostroratas en yahoo.es>
To: "python-es en aditel.org" <python-es en aditel.org>
Subject: Re: [Python-es] Dudilla con el main
Date: 05-27-02 11:44

--- Chema Cortés escribió: > -----BEGIN PGP SIGNED MESSAGE-----
> Puede que te resulte más sencillo si utilizas el módulo 'getopt'

He mirado el modulo, pero no me ha quedado muy claro su uso con los
ejemplos, imagino que sera
cosa de hacer pruebas, gracias de todas formas.

Attila





Más información sobre la lista de distribución Python-es