Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1311 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  parser une ligne de commande : problème avec noms génériques de fics

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

parser une ligne de commande : problème avec noms génériques de fics

n°1980623
suizokukan
Posté le 03-04-2010 à 10:54:51  profilanswer
 

Bonjour,
j'écris en python (2.6) un petit utilitaire en ligne de commande; le format d'entrée est :
 

Code :
  1. mon_prog --source ~/rep1/rep2/*.jpg


(je travaille sour Linux)
 
Quand je parse la ligne de commande avec le module optparse, ~/rep1/rep2/*.jpg est toujours remplacé par le nom du premier fichier ayant l'extention "jpg". Voici mon code :
 

Code :
  1. parser = optparse.OptionParser()
  2. parser.add_option("-s", "--source", default="*", dest="source", type="string" )
  3. opts, args = parser.parse_args()


 
... et opts.source ne vaut pas "~/rep1/rep2/*.jpg" mais qqc comme "~/rep1/rep2/1234.jpg".
 
Malgré la doc' je ne m'en sors pas. Pourriez-vous m'aider ?
Merci d'avance !


---------------
rule #1 : trust the python
mood
Publicité
Posté le 03-04-2010 à 10:54:51  profilanswer
 

n°1980624
suizokukan
Posté le 03-04-2010 à 11:07:28  profilanswer
 

En fait, le premier fichier est stocké dans opts, et args est une liste contenant les autres fichiers :
 

Code :
  1. opts = "~/rep1/rep2/1234.jpg"
  2. args = [ "~/rep1/rep2/6666.jpg",
  3.          "~/rep1/rep2/6667.jpg",
  4.          ...]


 
Est-ce le comportement normal ? Je ne comprends pas pourquoi ?


---------------
rule #1 : trust the python
n°1980659
- Renaud -
Posté le 03-04-2010 à 17:26:15  profilanswer
 

suizokukan a écrit :

En fait, le premier fichier est stocké dans opts, et args est une liste contenant les autres fichiers :
 

Code :
  1. opts = "~/rep1/rep2/1234.jpg"
  2. args = [ "~/rep1/rep2/6666.jpg",
  3.          "~/rep1/rep2/6667.jpg",
  4.          ...]


 
Est-ce le comportement normal ? Je ne comprends pas pourquoi ?


 
oui, c'est le shell qui résout ton *, donc quand le python s'exécute, l'étoile a déjà été remplacé par l'ensemble des fichiers jpg du répertoire.
 
Si tu veux vraiment récupérer *, il faut protéger : python toto.py "/tmp/*.jpg"

n°1980904
suizokukan
Posté le 05-04-2010 à 10:12:58  profilanswer
 

> Renaud, merci pour ta réponse, qui répond à ma question.
 
Je me permets de relancer le sujet avec une question du même type. Mon code est trop permissif :
 

Code :
  1. parser = optparse.OptionParser()
  2. parser.add_option("-s", "--source", default="*", dest="source", type="string" )
  3. parser.add_option("-c", "--commande", default="*", dest="commande", type="string" )
  4. opts, args = parser.parse_args()


 
laisse passer des choses comme :

Code :
  1. mon_programme --source * XXX --commande * YYY


 
Les arguments supplémentaires XXX et YYY passent directement dans la variable args, qui contient aussi mes fichiers source; je comprends la présence dans args de XXX qui vient après --source; mais comment faire pour que l'argument YYY déclenche une erreur, puisqu'il n'est pas associé à une option (par exemple ici, il n'est pas associé à --commande) ?
 
Merci d'avance !


---------------
rule #1 : trust the python

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  parser une ligne de commande : problème avec noms génériques de fics

 

Sujets relatifs
problème SGBD avec win'designRécuperer l'adresse de l'entrée ligne de l'ordinateur
Quel conteneur pour mon problème ?probleme d'assignation de valeur avec un tableau dans une classe
[RESOLU] Problème de Makefile...[c++ / qt] freefly camera problème souris
Problème variable dans une arborescenceproblème de compréhension pour ce code
Problème de rotation d'un clip en AS3commande sed problème
Plus de sujets relatifs à : parser une ligne de commande : problème avec noms génériques de fics


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR