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 :

Choix d'un fichier dans un répertoire


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut Choix d'un fichier dans un répertoire
    Bonjour à tous,

    Dans un répertoire j'ai une liste de fichier dont le nom ne change que par une modification de quelques caractères. Je souhaite pourvoir automatiser l'ouverture de ces fichiers afin d'effectuer une traitement.
    Comment faire pour ouvrir les fichiers et les traiter les uns après les autres ?

    Exemple d'une liste de fichiers :
    43-46-9p90N_0-40-59p02S_INV_1_1_100921_074244.csv
    43-46-9p90N_0-40-59p02S_INV_1_1_100921_084244.csv
    43-46-9p90N_0-40-59p02S_INV_1_1_100921_085544.csv
    43-46-9p90N_0-40-59p02S_INV_1_1_100922_090501.csv
    43-46-9p90N_0-40-59p02S_INV_1_1_111001_101074.csv

    Merci

  2. #2
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Je ne suis pas sûr d'avoir compris la question... Quelque chose comme ça?

    A+

    Pfeuh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    def treatFile(fname):
        try:
            fp = open(fname, 'r')
            line = fp.readline()
            # here the rest of treatment
            fp.close()
        except Exception as errstr:
            print errstr
     
    fnames = ['43-46-9p90N_0-40-59p02S_INV_1_1_100921_074244.csv',
        '43-46-9p90N_0-40-59p02S_INV_1_1_100921_084244.csv',
        '43-46-9p90N_0-40-59p02S_INV_1_1_100921_085544.csv',
        '43-46-9p90N_0-40-59p02S_INV_1_1_100922_090501.csv',
        '43-46-9p90N_0-40-59p02S_INV_1_1_111001_101074.csv']
     
    for fname in fnames:
        treatFile(fname)

  3. #3
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    merci pour ces réponses plxpy,

    cependant en utilisant glob j'ai un message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    import glob
     
    filename = glob.glob('*.csv')
     
    ##fs = open('43-46-9p90N_0-40-59p02S_INV_1_1_100921_074244.csv', 'r')
    fs = open(filename, 'r')
     
     
    fd = open('output.csv', 'w')
     
     
    for line in fs.readlines ():
        if line[0]=='S':
            data1 = line[0:13]           # récupération de la chaîne SNINV;038539;
            state = 1
        elif state is 1 and line[0]=='T':
            data2 = line[0:49]           # récupération de la chaîne TypeINV;43°46'9.90''N_0°40'59.02''S_INV_DFNN.ini;
            state +=1
        elif state is 2:
            fd.write(data1+data2+line)
        else : raise Exception('am i supposed to get here?')
     
    fs.close()
    fd.close()
    Message d'erreur : TypeError : coercing to Unicode : need string or buffer, list found

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    Merci pour ta réponse pfeuh,

    Ce que je souhaite faire c'est ouvrir un par un tous les fichiers contenu dans ce répertoire avec l'extension CSV pour effectuer un traitement.

    Le nombre de fichier étant variable

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 237
    Par défaut
    Ok j'ai trouvé mon erreur dans l'utilisation de GLOB

    voici le code final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    listeFichiers = glob.glob('*_INV_*.csv')
    for fichier in listeFichiers :
        fs = open(fichier,'r')
        newFichier="%s_ACCESS%s"%(os.path.splitext(fichier)[0],os.path.splitext(fichier)[1]) # ajout de ACCESS au nom du fichier
        fd = open (newFichier,'w')
        traitementOND(fichier)
        fs.close()
        fd.close()
    Merci de votre aide

  7. #7
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Cool, je ne connaissais pas le module glob!

  8. #8
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Le message que tu récupères est généré lors de l'appel à open : tu fournis le résultat de glob.glob() qui est une liste ("... need string or buffer, list found") en lieu et place du nom de fichier.

    Tu dois boucler sur les éléments de la liste retournée par glob.glob :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    filenameS = glob.glob('*.csv')
    for name in filenameS:
        fs = open(name)
        ...
    ps : filenameS pour insister lourdement sur le fait que tu récupères une liste, d'à prirori, plusieurs noms de fichiers (une liste vide ou n'ayant qu'un seul élément est aussi possible)

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

Discussions similaires

  1. Copier un fichier dans un répertoire
    Par soft damsel dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2006, 16h02
  2. compter le nombre de fichiers dans un répertoire !
    Par lehic dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 20/11/2005, 17h59
  3. Gestion de fichiers dans un répertoire
    Par rossy dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/11/2005, 15h38
  4. rechercher d'un nom de fichier dans un répertoire
    Par yerome dans le forum Langage
    Réponses: 7
    Dernier message: 21/07/2005, 11h54
  5. Réponses: 4
    Dernier message: 22/12/2003, 11h12

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