Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

getopt: problème avec les options longues (débutant)

5 réponses
Avatar
ctobini
Bonjour,

Je suis en train d'appendre Python, et j'ai un petit probl=E8me avec
getopt. En utilisant la doc officielle du module, je n'ai aucun
probl=E8me avec les options courtes, mais j'ai une exception avec les
formes longues :

Dans mon fichier essai.py :

optlist, args =3D getopt.getopt(sys.argv[1:], ["abc", "bcd", "cde=3D"])

L'erreur dans le Terminal:

tobini@ubuntu:~/Desktop$ python essai.py --abc --bcd --cde=3Darg_de_cde
Traceback (most recent call last):
File "essai.py", line 7, in ?
optlist, args =3D getopt.getopt(sys.argv[1:], ["abc", "bcd", "cde=3D"])
File "/biobin/python2.2.3//lib/python2.2/getopt.py", line 72, in
getopt
opts, args =3D do_longs(opts, args[0][2:], longopts, args[1:])
File "/biobin/python2.2.3//lib/python2.2/getopt.py", line 86, in
do_longs
has_arg, opt =3D long_has_args(opt, longopts)
File "/biobin/python2.2.3//lib/python2.2/getopt.py", line 103, in
long_has_args
raise GetoptError('option --%s not recognized' % opt, opt)
getopt.GetoptError: option --abc not recognized

Auriez-vous une id=E9es l=E0-dessus ?

En vous remerciant,

C=2E Tobini

5 réponses

Avatar
Jerome
ctobini wrote:
Bonjour,

Je suis en train d'appendre Python, et j'ai un petit problème avec
getopt. En utilisant la doc officielle du module, je n'ai aucun
problème avec les options courtes, mais j'ai une exception avec les
formes longues :

Dans mon fichier essai.py :

optlist, args = getopt.getopt(sys.argv[1:], ["abc", "bcd", "cde="])

L'erreur dans le Terminal:

:~/Desktop$ python essai.py --abc --bcd --cde=arg_de_cde
Traceback (most recent call last):
File "essai.py", line 7, in ?
optlist, args = getopt.getopt(sys.argv[1:], ["abc", "bcd", "cde="])
File "/biobin/python2.2.3//lib/python2.2/getopt.py", line 72, in
getopt
opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
File "/biobin/python2.2.3//lib/python2.2/getopt.py", line 86, in
do_longs
has_arg, opt = long_has_args(opt, longopts)
File "/biobin/python2.2.3//lib/python2.2/getopt.py", line 103, in
long_has_args
raise GetoptError('option --%s not recognized' % opt, opt)
getopt.GetoptError: option --abc not recognized

Auriez-vous une idées là-dessus ?

En vous remerciant,

C. Tobini



Bonjour

En regardant la doc python :
getopt(args, options[, long_options])

les options sont obligatoires...

Essaye avec
optlist, args = getopt.getopt(sys.argv[1:], '', ["abc", "bcd", "cde="])


Jérôme

Avatar
Eric Deveaud
ctobini wrote:
Dans mon fichier essai.py :

optlist, args = getopt.getopt(sys.argv[1:], ["abc", "bcd", "cde="])


si tu regarde la doc de getopt, l'api est la suivante
getopt(args, options[, long_options])

il y a donc
args la liste des chaines de caracteres a traiter typiquement sys.agv[1:]
options la chaine de description des options monolettres
qui sont obligatoires

les long_options sont facultatives

il te faut donc la chaine de description des options monolettres

Eric

Avatar
ctobini
Bonjour et merci de votre aide,

Ca marche impeccablement avec :

optlist, args = getopt.getopt(sys.argv[1:], '', ["abc", "bcd", "cde="])

J'avais déjà essayé vendredi soir, mais en fin de semaine, je viens
de me rendre compte que j'avais oublié la virgule '' ["abc", "bcd",
"cde="]), et plusieurs fois d'affilé :-)

Merci encore pour votre aide et bonne journée à tous.

C. Tobini
Avatar
bruno at modulix
ctobini wrote:
Bonjour,

Je suis en train d'appendre Python, et j'ai un petit problème avec
getopt.


Sans rapport direct avec ta question, mais je te recommande plutôt optparse.

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

Avatar
ctobini
Bonjour,

Oui j'ai vu que ce module était plus récent et conseillé, je dois
reprendre un script fait par une tierce personne, pour l'instant
j'assimile son fonctionnement quitte à le modifier plus tard.

C. Tobini