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 : ajouter un suffixe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2016
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 67
    Par défaut Renommer des fichiers : ajouter un suffixe
    Bonjour,
    j'ai une liste de 80 fichiers "A:\CTM\LUX17_003__EP 075.pdf" et je voudrais ajouter le suffixe "_CTM" ce qui ferait ""A:\CTM\LUX17_003__EP 075_CTM.pdf"
    j'ai établis ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import glob, os
    folder = "A:\CTM"
    for filename in glob.glob(os.path.join(folder,"*.pdf")):
        newname = os.path.splitext(filename)[:-4] + "_CTM"
        os.rename(filename, newname)
    j'ai le message d'erreur suivant
    Traceback (most recent call last):
    File "C:\Users\NICO\Desktop\test1.py", line 4, in <module>
    newname = os.path.splitext(filename)[:-4] + "_CTM"
    TypeError: can only concatenate tuple (not "str") to tuple
    avez vous la solution à mon problème?
    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Citation Envoyé par Rizcolas62 Voir le message
    avez vous la solution à mon problème?
    Lorsqu'on a ce genre de problème, il faut commencer par utiliser la commande "print" pour afficher les différents éléments fabriqués par os.path.splitext(filename), os.path.splitext(filename)[:-4]. Cà vous permettra de mieux comprendre le problème...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2016
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 67
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Lorsqu'on a ce genre de problème, il faut commencer par utiliser la commande "print" pour afficher les différents éléments fabriqués par os.path.splitext(filename), os.path.splitext(filename)[:-4]. Cà vous permettra de mieux comprendre le problème...

    - W
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import glob, os
    folder = "A:\CTM"
    suffix = "_CTM.pdf"
    for filename in glob.glob(os.path.join(folder,"*.pdf")):
        newname = os.path.splitext ((filename)[:-4] + (suffix))
        #print (newname)
        os.rename(filename, newname)
    print (newname) cela donne ceci :
    ('A:\\CTM\\LUX17_003__EP 226_CTM', '.pdf')
    ('A:\\CTM\\LUX17_003__EP 230_CTM', '.pdf')
    ('A:\\CTM\\LUX17_003__EP 233_CTM', '.pdf')
    ('A:\\CTM\\LUX17_003__EP 235_CTM', '.pdf')
    ('A:\\CTM\\LUX17_003__EP 243_CTM', '.pdf')
    ('A:\\CTM\\LUX17_003__EP 246_CTM', '.pdf')
    ...
    c'est ok!
    Par contre le tout donne le message d'erreur suivant!
    Traceback (most recent call last):
    File "C:\Users\NICO\Desktop\test1.py", line 7, in <module>
    os.rename(filename, newname)
    TypeError: rename() argument 2 must be string, not tuple

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Vous avez modifié votre code et çà plante un peu plus loin car un tuple n'est pas une chaîne de caractères attendue par os.rename.

    Réfléchissez un peu à ce qu'il se passe:
    os.path.splitext découpe le nom du fichier en 2 parties:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> filename=r'/a/b/c/d.e'
    >>> os.path.splitext(filename)
    ('/a/b/c/d', '.e')
    >>>
    Vous voulez concaténer _CTM à la première partie puis concaténer le résultat avec l'extension ".pdf".
    Pourquoi le [:-4]? .splitext fait déjà le boulot...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2016
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2016
    Messages : 67
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Vous avez modifié votre code et çà plante un peu plus loin car un tuple n'est pas une chaîne de caractères attendue par os.rename.

    Réfléchissez un peu à ce qu'il se passe:
    os.path.splitext découpe le nom du fichier en 2 parties:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> filename=r'/a/b/c/d.e'
    >>> os.path.splitext(filename)
    ('/a/b/c/d', '.e')
    >>>
    Vous voulez concaténer _CTM à la première partie puis concaténer le résultat avec l'extension ".pdf".
    Pourquoi le [:-4]? .splitext fait déjà le boulot...

    - W
    oui c'est exact ('/a/b/c/d_CTM.e')
    j'arrive pas à comprendre comment réutiliser le splitext?
    dois je utiliser os.path.join?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Citation Envoyé par Rizcolas62 Voir le message
    dois je utiliser os.path.join?
    Dans ce cas, vous avez juste à concaténer 2 chaînes de caractères le début et la fin pas construire le chemin d'un fichier... Prendre le premier élément du tuple retourné par .splitext, lui ajouter _CTM puis lui ajouter l'extension (le 2ème élément du tuple).
    Ce sont des opérations élémentaires (concaténation) sur les chaînes de caractères et les extractions (premier, second) des éléments d'un tuple que vous devriez savoir retrouver dans votre tuto. préféré.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Supprimer / Renommer des fichiers
    Par mick030118 dans le forum C
    Réponses: 2
    Dernier message: 18/03/2006, 18h24
  2. renommer des fichiers
    Par avantoux dans le forum Windows
    Réponses: 4
    Dernier message: 27/12/2005, 16h01
  3. Renommer des fichiers
    Par Cathy dans le forum Linux
    Réponses: 3
    Dernier message: 12/09/2005, 17h24
  4. [LG]programme qui renomme des fichiers
    Par Ne0taku dans le forum Langage
    Réponses: 9
    Dernier message: 16/02/2005, 21h18
  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