[Python] conflit avec optparse
Fermé
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
-
4 oct. 2006 à 18:50
Bob El Ahn Messages postés 42 Date d'inscription dimanche 27 février 2005 Statut Contributeur Dernière intervention 25 juillet 2007 - 6 oct. 2006 à 02:18
Bob El Ahn Messages postés 42 Date d'inscription dimanche 27 février 2005 Statut Contributeur Dernière intervention 25 juillet 2007 - 6 oct. 2006 à 02:18
A voir également:
- [Python] conflit avec optparse
- Citizen code python avis - Accueil - Outils
- Ce programme est écrit en python ✓ - Forum Python
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
3 réponses
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
6 oct. 2006 à 01:57
6 oct. 2006 à 01:57
Hm, du nouveau.
J'ai changé la fonction, elle n'est plus intéractive:
Ca passe tous les éléments de argslist par glob.glob et ca les ajoute à filelist..
Au départ je me disais que il n'y aurait pas toutes les expansions du shell, comme le ~..
Si on utilise la fonction tel quel c'est vrai, mais après quelques test je me suis rendu compte que la liste des arguments positionnels de optparse prend en compte les 'shell wildcards'. [je code sous bash].
Donc si on passe ~/* comme argument à un programme, la liste de optparse sera composée de tous les éléments de votre dossier 'home'. Pour avoir ['~/*'] comme liste il faut mettre les guillemets autour sur la ligne de commande.
Autrement dit, si on utilise cette fonction avec les arguments de optparse (-->en ligne de commande) on obtient toutes les expansions du shell (et la passoire au glob.glob est un peu overkill)..
Voilà, juste quelques observations parce que je ne trouvais pas ça très clair dans la documentation de optparse. Il y a plein d'examples sur comment on initialise les options mais pas grand chose sur comment on s'en sert après.
Mir
J'ai changé la fonction, elle n'est plus intéractive:
def getfilelist(argslist=[]): filelist = [] map(filelist.extend, map(glob.glob, argslist)) return filelist
Ca passe tous les éléments de argslist par glob.glob et ca les ajoute à filelist..
Au départ je me disais que il n'y aurait pas toutes les expansions du shell, comme le ~..
Si on utilise la fonction tel quel c'est vrai, mais après quelques test je me suis rendu compte que la liste des arguments positionnels de optparse prend en compte les 'shell wildcards'. [je code sous bash].
Donc si on passe ~/* comme argument à un programme, la liste de optparse sera composée de tous les éléments de votre dossier 'home'. Pour avoir ['~/*'] comme liste il faut mettre les guillemets autour sur la ligne de commande.
Autrement dit, si on utilise cette fonction avec les arguments de optparse (-->en ligne de commande) on obtient toutes les expansions du shell (et la passoire au glob.glob est un peu overkill)..
Voilà, juste quelques observations parce que je ne trouvais pas ça très clair dans la documentation de optparse. Il y a plein d'examples sur comment on initialise les options mais pas grand chose sur comment on s'en sert après.
Mir
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
6 oct. 2006 à 02:05
6 oct. 2006 à 02:05
D'autre part il faut mettre des guillemets (en ligne de commande) si on utilise le caractère d'échappement "\" dans les arguments.
J'ai fait des essais: si on met pas les guillemets ça renvoie la chaine moins les \:
ex: prog \n\t ==> ['nt'] ;; prog "\n\t" ==> ['\\n\\t']
Et encore j'ai pas essayé la différence entre " et ' pour les expressions plus complexes.
En mettant les guillemets ca a l'air d'être interprété comme une raw string. Peut-être que ça dépend de la version de python/optparse?
Mir,
J'ai fait des essais: si on met pas les guillemets ça renvoie la chaine moins les \:
ex: prog \n\t ==> ['nt'] ;; prog "\n\t" ==> ['\\n\\t']
Et encore j'ai pas essayé la différence entre " et ' pour les expressions plus complexes.
En mettant les guillemets ca a l'air d'être interprété comme une raw string. Peut-être que ça dépend de la version de python/optparse?
Mir,
Bob El Ahn
Messages postés
42
Date d'inscription
dimanche 27 février 2005
Statut
Contributeur
Dernière intervention
25 juillet 2007
8
6 oct. 2006 à 02:18
6 oct. 2006 à 02:18
En fait c'est même pas ça:
prog \n ==> 'n'
prog \\n ==> '\\n'
prog \\\n ==> '\\n'
prog \\\\n ==> '\\\\n'
prog '\n' ==> '\\n'
prog '\\n' ==> '\\n'
prog '\\\n' ==> '\\\\n'
prog '\\\\n' ==> '\\\\n'
*Soupir*, ah il est tard j'y réfléchirai demain..
Mir,
prog \n ==> 'n'
prog \\n ==> '\\n'
prog \\\n ==> '\\n'
prog \\\\n ==> '\\\\n'
prog '\n' ==> '\\n'
prog '\\n' ==> '\\n'
prog '\\\n' ==> '\\\\n'
prog '\\\\n' ==> '\\\\n'
*Soupir*, ah il est tard j'y réfléchirai demain..
Mir,