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 :

écrire une liste de fichiers en fonction de leur extension


Sujet :

Python

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 11
    Points
    11
    Par défaut écrire une liste de fichiers en fonction de leur extension
    Bonjour,

    Grand débutant en Python, je n'arrive pas à réaliser un tri de fichiers en fonction de leur extension.
    Je veux donc établir une liste des fichiers.jpg présents dans mon répertoire.
    Voilà où j'en suis (pas bien loin, je l'avoue...):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     list_in = [os.listdir("G:/ArcGISdata/Tauern/db_Bolzano/OF2006_01/")]
     for name in list_in:
        if ".jpg" in name:
            print name
        else:
            pass
    j'ai aussi fait des essais avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    list_in = [os.listdir("G:/ArcGISdata/Tauern/db_Bolzano/OF2006_01/")]
    for name in list_in:
        extension = os.path.splitext(name)
        if ".jpg" in extension[1]:
            print name
        else:
            pass
    je me doute qu'il s'agit d'une grossière erreur (voire qu'il existe une facon bien plus simple de le faire), mais j'avoue que j'en ai marre de me battre tout seul et qu'un peu d'aide serait la bienvenue
    Merci
    seb

    ps: la mise en frome des scripts ont sauté quand j'ai fait mon copier/coller dans la fenêtre de discussion.

  2. #2
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #-*- coding: utf-8 -*- 
     
    import os
     
    list_in = os.listdir("c:/windows/")
    for name in list_in:
        if name[-4:] == '.exe':
            print name
        else:
            pass
    L'erreur que tu fais est le fait d'entourer la fonction os.listdir de [], de ce fait tu créer une liste. Mais le souci c'est que os.listdir te renvoi déjà une liste, du coup tu te retrouves avec une liste contenant un seul élément qui est lui même une liste.

    Ça c'est une liste contenant 2 éléments. Ça c'est une liste contenant un seul élément (une autre liste)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [['addins', 'AppPatch']]
    Pour vérifier, habitues tu toi à faire des print de tes variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #-*- coding: utf-8 -*- 
     
    import os
     
    list_in = [os.listdir("c:/windows/")]
    print 'list_in = ', list_in
    for name in list_in:
        print 'name = ', name
        if ".jpg" in name:
            print name
        else:
            pass
    et là ton erreur devrais te sauter aux yeux.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 88
    Points
    88
    Par défaut
    Le module glob [1] permet de faire simplement ce que tu souhaites.

    Exemple rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import glob
    jpgs = glob.glob('*.jpg')
    print jpgs
    Tu peux également lui indiquer un chemin relatif ou absolu.

    [1] http://docs.python.org/library/glob.html

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    salut je passerai pas un fichier avec la commande ls du shell.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import os
    os.system("ls chemin_du_fichier/*.jpg > destination")
    info=open("destination","r")
    liste1=info.readlines()
    info.close()
    print liste1
    edit:
    ou avec le DOS la commande ("dir c:\monrep\*.jpg > monfichier.txt")

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 74
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par maori Voir le message
    salut je passerai pas un fichier avec la commande ls du shell.
    Je n'aime pas absolument pas cette méthode :
    - non portable
    - dépendant du l'affichage du résultat de ls
    - création d'un fichier temporaire inutile
    - ...

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    voilà comment je ferais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import os
     
    rep = "G:/ArcGISdata/Tauern/db_Bolzano/OF2006_01/"
     
    entrees = os.listdir(rep)
    for nf in entrees:
        nfc = os.path.join(rep, nf)
        if os.path.isfile(nfc) and os.path.splitext(nfc)[-1]==".jpg":
            print nf
    Plusieurs options supplémentaires sont possibles, par exemple:

    - se donner plus de possibilités de sélection en utilisant le module fnmatch (ex: *.jpg + *.gif + ...).

    - trier par nom de fichier ou par extension en utilisant sort() ou sorted().

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

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

Discussions similaires

  1. supprimer des fichiers en fonction de leur extension
    Par nekcorp dans le forum Général Python
    Réponses: 6
    Dernier message: 14/05/2014, 18h26
  2. Afficher une liste de clients en fonction de leur ville
    Par anneh dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/01/2013, 11h59
  3. Réponses: 0
    Dernier message: 24/03/2010, 15h30
  4. Réponses: 2
    Dernier message: 21/08/2009, 12h18
  5. Réponses: 10
    Dernier message: 30/01/2005, 20h53

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