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 :

renommer des fichiers avec python


Sujet :

Python

Vue hybride

zekruss renommer des fichiers avec... 14/11/2009, 21h16
nardo47 Salut ! Ca manque un peu... 14/11/2009, 21h45
tyrtamos Bonjour, La méthode pour... 14/11/2009, 21h55
zekruss Merci pour votre aide, le... 16/11/2009, 16h32
nardo47 Le module os.path est ton... 16/11/2009, 17h08
valAa Salut, Voici un moyen de... 16/11/2009, 17h10
tyrtamos Voilà un petit programme qui... 16/11/2009, 17h28
kango ou plus simplement: ... 16/11/2009, 17h44
zekruss Merci bcp pour votre aide, ça... 16/11/2009, 17h44
valAa @kango : ah je connaissais... 16/11/2009, 19h09
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut renommer des fichiers avec python
    bonjour,

    J'ai du mal a renommer une liste de fichiers dans un repertoire en ajoutant un prefixe au nom d'origine:

    exemple:

    fichiers sources:
    aaa_bbb.csv
    xxx_zzz_www_vvv.csv

    fichiers resultats:
    prefixe.aaa_bbb.csv
    prefixe.xxx_zzz_www_vvv.csv

    j'ai deja essayé en modifiant des scripts sur le net ça fonctionne pas

    merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Par défaut
    Salut !

    Ca manque un peu d'infos. Tu essaies comment ? Quel message d'erreur (si tu en as 1) s'affiche ? etc.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    La méthode pour renommer fonctionne bien, je viens de le vérifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    os.rename('test.txt','prefixe_test.txt')
    Pour le reste, il faut nous en dire plus.

    Tyrtamos

  4. #4
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Merci pour votre aide, le probleme au fait c'est pas d'utiliser os.rename ça marche parfaitement, mais c'est que j'ignore les noms des fichiers avec extension.csv , c'est un ensemble de fichiers qui se trouve sous un repertoir, j'aimerai pouvoir donner le chemin vers le repertoire, le script doit pouvoir parcourir tt les fichiers.csv de celui ci et les renommer

    exemple : fichier d'origine mmm.csv

    resultat prefixe.mmm.csv

    comment extraire les noms de ces fichiers pour les renommer ?

    voila le script que j'ai utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for files in os.walk(path_to_entities_under_suite):
        for filename in files:
           oldname= '%s.csv'%filename
           print oldname
           newname='prefixe.%s.csv'%filename
           print newname
           #os.rename(filename,newname)
    en desactivant os.rename et en utilisant print voila ce que j'obtient:
    /////////////////////
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [].csv
    prefixe.[].csv
     
    ['agg_index.csv','prod_businessunit.csv'].csv
    prefixe.['agg_index.csv','prod_businessunit.csv'].csv
    cela semble correct vu qu'il a trouvé les fichiers
    ////////////////////////:
    qd j'active os.rename, voila ce qui se passe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "./main_v2.py", line 100, in (module)
         os.rename(filename,newname)
    WindowsError: [Error 123] The filename, directory name, or volume label syntax is incorrect
    Merci

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 141
    Par défaut
    Citation Envoyé par zekruss Voir le message
    comment extraire les noms de ces fichiers pour les renommer ?
    Le module os.path est ton ami, dans ce cas là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    >>> import os.path
    >>> os.path.basename('/chemin/quelconque/mmm.csv')
    'mmm.csv'
    >>> os.path.dirname('/chemin/quelconque/mmm.csv')
    '/chemin/quelconque'
    >>> os.path.split('/chemin/quelconque/mmm.csv')
    ('/chemin/quelconque', 'mmm.csv')
    >>> os.path.join('/chemin/quelconque', 'prefixe.mmm.csv')
    '/chemin/quelconque/prefixe.mmm.csv'
    Là, je crois qu'il y a tout pour que tu arrives à tes fins (et bien + encore dans ce module) !

    Et pour lister le contenu d'un fichier ? Hmmm, le module os a ce qu'il faut, mais je te laisse chercher un peu dans la doc.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    Salut,
    Voici un moyen de récupérer les noms de tous les fichiers *.csv dans le répertoire "folder" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listfiles = [f for f in os.listdir(folder) if (os.path.isfile(os.path.join(folder, f)) and os.path.splitext(f)[1] == '.csv')]
    edit : posté un peu tard, nardo47 est passé avant

  7. #7
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Voilà un petit programme qui fait tout et que tu pourras adapter facilement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import os
    import fnmatch
     
    rep = r"C:\Python26"
    selection = "*.csv"
    noms = os.listdir(rep)
    for nom in noms:
        nfc = os.path.join(rep, nom)
        if os.path.isfile(nfc) and fnmatch.fnmatch(nom, selection):
            os.rename(nfc, os.path.join(rep, "prefixe_" + nom))
    Le module fnmatch permet de vérifier si un nom de fichier correspond à la sélection (chaine avec joker).
    Tu pourrais d'ailleurs avoir une liste de sélections, et il faudrait alors vérifier que le nom testé vérifie au moins l'une d'entre elles.

    Tyrtamos

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    Citation Envoyé par valAa Voir le message
    Salut,
    Voici un moyen de récupérer les noms de tous les fichiers *.csv dans le répertoire "folder" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listfiles = [f for f in os.listdir(folder) if (os.path.isfile(os.path.join(folder, f)) and os.path.splitext(f)[1] == '.csv')]
    edit : posté un peu tard, nardo47 est passé avant
    ou plus simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import glob, os
    listfiles = glob.glob(folder+os.sep+"*.csv")

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 4
    Par défaut
    Merci bcp pour votre aide, ça marche comme pas possible !!!!! lol , mission accomplie

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    @kango : ah je connaissais pas glob. Merci bien !

Discussions similaires

  1. renommer des fichiers avec nom du répertoire
    Par mitch123 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/05/2013, 19h35
  2. renommer des fichiers avec 4 décimales sous dos
    Par gundorf dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 17/06/2012, 10h33
  3. [ZF 1.11] comment renommer des fichier avec setmultiFile(4)
    Par keokaz dans le forum Zend Framework
    Réponses: 8
    Dernier message: 06/08/2011, 08h57
  4. Réponses: 9
    Dernier message: 04/02/2010, 16h36
  5. [] [Réseau] Renommer des fichiers dans un site FTP
    Par JerBi dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/08/2003, 00h35

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