IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

mauvaise utilisation du module glob ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2012
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 73
    Par défaut mauvaise utilisation du module glob ?
    Bonjour à tous,

    j'utilise ce module pour récupérer tous les fichiers contenus dans un dossier, et les passer un à un en argument d'un logiciel. L'ennui c'est qu'à chaque utilisation un des fichiers semble être écrasé durant la manipulation et il n'est donc pas reconnu par mon logiciel. Je pense que le problème vient de mon code étant donné que le fichier en question est du même type que les autres et que lorsque je lance le logiciel dessus manuellement tout fonctionne correctement.

    Voici la partie de mon code ou j'utilise ce module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for fichier in glob.glob("Dossier_1/Dossier_1_1/./*"):
    		os.system("./mon_logiciel  -in "+fichier+"  -out "+fichier+".clw ")
    je n'ai pas beaucoup d'experience avec ce module, peu être que quelque chose m'a échappé

  2. #2
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Un peu au hasard (Balthazar), échapper les noms de fichiers avec de "*? Ou mieux, préférer le module subprocess à os.system*:

    Au passage, "Dossier_1/Dossier_1_1/./*" est équivalent à "Dossier_1/Dossier_1_1/*", non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import subprocess
    for fichier in glob.glob("Dossier_1/Dossier_1_1/*"):
        subprocess.call(["./mon_logiciel",  "-in",  fichier, "-out", fichier+".clw"])
    Sinon, donne plus d’info sur ton code et ces fichiers…

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Je me pose la même question sur les noms de fichiers.

    Avec glob, pour lister tous les fichiers sans distinctions d'extension c'est comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glob.glob("chemin/*.*")
    Dans la commande que tu exécutes, tu leur ajoutes une nouvelle extension ".clw", il y a une raison ?

    C'est toujours le même fichier qui foire ou à chaque fois un autre au hasard ?

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2012
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 73
    Par défaut
    Au passage, "Dossier_1/Dossier_1_1/./*" est équivalent à "Dossier_1/Dossier_1_1/*", non ?
    je vais faire le test, j'avais repris la synthaxe d'après un exemple trouvé sur le net et je ne m'en suis jamais éloigné en fait.

    Sinon, donne plus d’info sur ton code et ces fichiers…
    Cette partie du code est vraiment détachée du reste du programme, concernant les fichiers se sont en réalité des fichiers contenant des séquences au format fasta, c'est à dire:

    >Seq1
    ATTCAGACGAGCAGC
    >Seq2
    CTAGCTAGCATCAGCACT
    ....


    C'est toujours le même fichier qui foire ou à chaque fois un autre au hasard ?
    C'est toujours le même (mais je fais mes tests avec le même jeu de données à chaque fois), et j'ai vérifié ce fichier n'a rien de différent avec les autres.

    Dans la commande que tu exécutes, tu leur ajoutes une nouvelle extension ".clw", il y a une raison ?
    En fait le logiciel (qui est un logiciel d'alignement) produit donc un fichier d'output pour chaque fichier d'input, et pour plus de facilité je conserve le même nom, à la différence que j'ajoute l'extention .clw pour ne pas écraser mes fichiers d'inputs.

    je vais essayer vos conseils merci

  5. #5
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Il serait intéressant de connaître un échantillon des noms de fichier, en particulier de celui qui pose problème (a-t-il une espace, par exemple*?).

    Et glob.glob("chemin/*") suffit pour lister tout le contenu d’un dossier, me semble-t-il ("chemin/*.*" ne sélectionne que les fichiers ayant une extension*!) –*sauf que dans ce cas, il est encore plus simple d’utiliser os.listdir("chemin")*!

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2012
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 73
    Par défaut
    Je confirme, dossier/./* et dossier/* ont le même effet. Le fichier qui me pose problème se nomme US8, les autres se nomment US1, US2... Son contenu est le même que les autres (en terme de structure biensur).

    J'ai oublié de préciser que dans le dossier contenant mes fichiers se trouve un autre dossier (dans lequel je transfert les fichiers d'outputs une fois la boucle achevée). Mais comme le module glob ne récupère que les fichiers je ne pense pas qu'il puisse nuir au bon fonctionnement de mon programme.

    Lorsque le logiciel tourne il y a un moment où il me renvoie "No sequences in input file", en réalité pendant ma boucle mon fichier US8 est écrasé à un moment, et je ne comprends pas pourquoi.


    EDIT : je viens de renommer le fichier US8 -> US81 et ça marche, aucun fichier n'a été oublié, je suis septique je serai incapable d'expliquer pourquoi ça fonctionne. C'est donc "résolu", bien que je n'ai pas vraiment compris.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Decompression d'un fichier sans utiliser les modules du CPAN
    Par choubiroute dans le forum Modules
    Réponses: 6
    Dernier message: 10/03/2006, 14h20
  2. [VB]utilisation des modules en vb
    Par zidenne dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/01/2006, 11h19
  3. erreur lorsque j'utilise le module session
    Par vbcasimir dans le forum Modules
    Réponses: 13
    Dernier message: 14/10/2005, 13h41
  4. utilisation du module WWW::Hotmail
    Par mouette_fstt dans le forum Modules
    Réponses: 2
    Dernier message: 22/07/2005, 16h58
  5. [web] Probleme de passe de variable qd j utilise un module TK
    Par Slippers dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 19/04/2005, 17h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo