Deutsch English Français Italiano |
<87wnchvsqa.fsf@universite-de-strasbourg.fr.invalid> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.mixmin.net!aioe.org!K7PIs9tCGQ+WHJa7e6BylQ.user.46.165.242.75.POSTED!not-for-mail From: Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> Newsgroups: fr.comp.os.unix Subject: Re: =?utf-8?Q?r=C3=A8gle?= pour =?utf-8?Q?=C3=A9crire?= les "usage: ..." Date: Wed, 13 Jul 2022 19:15:57 +0200 Organization: =?utf-8?Q?Universit=C3=A9?= de Strasbourg Message-ID: <87wnchvsqa.fsf@universite-de-strasbourg.fr.invalid> References: <62c8c4eb$0$24781$426a74cc@news.free.fr> <tab00r$v6d7$1@dont-email.me> <62c98a7b$0$18716$426a74cc@news.free.fr> <87a69ix9rl.fsf@universite-de-strasbourg.fr.invalid> <62cc5318$0$18751$426a34cc@news.free.fr> <tahkuf$6ob$1@cabale.usenet-fr.net> <875yk3xsbg.fsf@universite-de-strasbourg.fr.invalid> <62ce256c$0$22264$426a34cc@news.free.fr> <871qupxml4.fsf@universite-de-strasbourg.fr.invalid> <62ceda82$0$24807$426a34cc@news.free.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: gioia.aioe.org; logging-data="43282"; posting-host="K7PIs9tCGQ+WHJa7e6BylQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) Cancel-Lock: sha1:b6/ct6sSpCnMDH1wijveLg2gwcI= X-Notice: Filtered by postfilter v. 0.9.2 Bytes: 5078 Lines: 111 Thomas <fantome.forums.tDeContes@free.fr.invalid> writes: >> >> accepter "-vn" comme "-v -n", >> >> accepter "-odir" comme "-o dir", >> > >> > est-ce que c'est qqch que les usagers utilisent bcp, =C3=A7a ? >> > parce que moi je trouve =C3=A7a plut=C3=B4t emb=C3=AAtant, avec notamm= ent : >> > "-onv" =3D "-o -n -v", ou >> > "-onv" =3D> dir =3D "nv" ? >>=20 >> La seconde. Si un argument contient plusieurs options, la premi=C3=A8re >> n=C3=A9cessitant un argument d'option s'impose : l'argument de l'option = est >> soit la suite, soit l'argument suivant. > > (si l'argument suivant est une option, que fait getopt() ?) -o -v =3D> -v est l'argument de l'option -o (idem "-o-v") > ce que je voulais dire c'est qu'=C3=A0 la relecture c'est pas =C3=A9viden= t du=20 > tout, il faut d=C3=A9chiffrer. > c'est qqch que j'=C3=A9vite au maximum. Je pense que c'est juste le contraire : on lit de gauche =C3=A0 droite, il suffit de savoir quelle option a un argument. [...] > =C3=A7a fait bcp plus usine =C3=A0 gaz que l'analyse lin=C3=A9aire, > donc - entre autres - plus difficile =C3=A0 debugger et =C3=A0 maintenir. > > bon, si c'est n=C3=A9cessaire on va se le farcir ... Pas du tout, tu fais ce que tu veux, c'est juste une illustration du fait que ce n'est pas tr=C3=A8s difficile. [...] >> while optind < argc and argv[optind][0] =3D=3D "-": >> if argv[optind] in ["-v", "--verbose"]: >> opt_v =3D True; optind +=3D 1 >> elif argv[optind] in ["-ni", "--new-iork"]: >> opt_ni =3D True; optind +=3D 1 >> elif argv[optind] in ["-od", "--output-dir"] and optind+1 < argc: >> opt_od =3D True; dir =3D argv[optind+1]; optind +=3D 2 >> else: >> wtf ("option inconnue") [...] > > si je te suis bien, tu consid=C3=A8res qu'il n'est pas important de trait= er=20 > "--" ? Voil=C3=A0 ce qu'il faut ajouter : elif argv[optind] =3D=3D "--": optind +=3D 1 break >> On peut affiner le cas d'erreur o=C3=B9 "-od" est le dernier =C3=A9l=C3= =A9ment. > > h=C3=A9 oui ! l=C3=A0 tu utilises argv[optind+1] sans v=C3=A9rifier qu'il= existe ! Si si, c'est v=C3=A9rifi=C3=A9. >> On peut aussi tester la duplication des options (si le opt_x est d=C3=A9= j=C3=A0 >> True). > > dans ce cas l=C3=A0 on doit faire quoi ? ignorer ou une erreur ? Au choix. Je pr=C3=A9f=C3=A8re ignorer (ou warning au pire). [...] >> Le test de coh=C3=A9rence final a exactement la meme structure que celui= que >> tu fais en analysant les arguments (sauf qu'il teste seulement les >> diff=C3=A9rents bool=C3=A9ens). > > je ne dirais pas "exactement", mais je crois que =C3=A7a va aller. C'est la m=C3=AAme logique. [...] >> (=C3=80 mon avis, ce n'est pas assez gratifiant pour se passer de getopt= () ou >> s'=C3=A9carter de ses conventions, mais chacun son truc.) > > je ne comprend pas cette phrase. Cela signifie : moi j'utiliserais getopt() =C3=A0 la place >> C'est Posix, il y a de fortes chances que la d=C3=A9pendance soit d=C3= =A9j=C3=A0 >> satisfaite. > > je programme en Ada, et =C3=A7a ne fait pas partie de la norme Ada. donc = =C3=A7a=20 > me fait d=C3=A9pendre de mon compilateur via ses "suppl=C3=A9ments". > =C3=A7a peut =C3=AAtre g=C3=AAnant pour ceux qui voudraient utiliser un a= utre=20 > compilateur que le mien. Il doit y a avoir quelque chose d'=C3=A9quivalent =C3=A0 getopt. En python = il y a un module getopt et aussi argparse. Si =C3=A7a n'y est pas, tu peux r=C3=A2= ler aupr=C3=A8s des d=C3=A9veloppeurs de la biblioth=C3=A8que standard. -- Alain.