Renommer des fichiers avec Python
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 42

Renommer des fichiers avec Python



  1. #1
    Samuel9-14

    Renommer des fichiers avec Python


    ------

    Bonjour à tous !
    J'ai une petite question concernant la programmation avec Python.
    J'aimerais renommer des fichiers dont le nom dépend d'une incrémentation propre à chaque fichier. J'ai mis tous mes fichiers dans une liste appelée "Files", mes incréments sont dans la liste "incréments" et l'entier J correspond lui aussi à un numéro attribué à chaque fichier. Voilà à quoi ressemble les quelques lignes qui m'intéressent :

    Increments = [...]
    Files = [...]
    For fichier in Files :
    While Increments[i]>5 and Increments[i]<15 : #condition
    J+=45 #Attribution du numéro J
    Os.rename(fichier,”xxx_”Increm ents[i]”_”J) #Renommage du fichier
    I+=1

    En fait ma principale question c'est de savoir si ma syntaxe ”xxx_”Increments[i]”_”J est correcte. Je n'ai pas encore Python, donc je ne peux pas vérifier si cela fonctionne. Et si ce n'est pas correcte (ce qui ne m'étonnerait pas ), comment faire pour parvenir à mes fins ?

    Merci d'avance !

    -----

  2. #2
    CM63

    Re : Renommer des fichiers avec Python

    Bonjour,

    Je ne regarde pas en profondeur car je suis pris par le temps. Juste quelques remarques:
    - utilise la balise code afin qu'on voit l'indentation (là on suppose que la bocle for se temine au i+=1 c'est ça?)
    - I et J ne sont pas initialisés,
    - mets quels valeurs dans Increments et Files afin que l'on comprenne ce que tu veux faire.

  3. #3
    Samuel9-14

    Re : Renommer des fichiers avec Python

    I et J ont été initialisés à 0 au début du programme.
    La boucle for se termine plus loin en fait
    Je modifie increments et files et j'ajoute la suite de mon programme pour expliciter ma boucle while.

    Code:
    Increments = [10,10,20,20,20,20,30,40,....]
    Files = os.listdir(« /LTUser/Samuel »)
    For fichier in Files : 
    	While Increments[i]>5 and Increments[i]<15 :          #condition
    		J+=45                                         #Attribution du numéro J
    		Os.rename(fichier,”xxx_”Increments[i]”_”J)    #Renommage du fichier
    		I+=1
    
    	While Increments[i]>15 and Increments[i]<25 :
    		J+=22.5
    		Os.rename(fichier,”BTDF_”Increments[i]”_”J)
    		I+=1

  4. #4
    CM63

    Re : Renommer des fichiers avec Python

    A première vue, ça me parait bon. C'est dommage que tu ne puisse pas essayer, à la place des renames tu mettrais des print pour vérifier.

  5. A voir en vidéo sur Futura
  6. #5
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Ok merci. Je pense pouvoir l'essayer cet après-midi donc je serais vite fixé

  7. #6
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Désolé pour le double post.
    J'ai ouvert mon script avec Python et c'est bien ce que je craignais, il me signale une erreur de syntaxe pour la formulation os.rename(fichier,"BTDF_"Incre ments[i]"_"J).
    Quelqu'un a une idée pour contourner ce problème ?

  8. #7
    polo974

    Re : Renommer des fichiers avec Python

    pour i et j, il faut choisir: majuscule ou minuscule.

    pour la chaine, tu peux faire:
    "blabla"+str(n)+"suite du blabla"

    utiliser + pour concaténer du texte
    utiliser str() pour être sûr que c'est du texte
    Jusqu'ici tout va bien...

  9. #8
    Samuel9-14

    Re : Renommer des fichiers avec Python

    J'avais corrigé i et j pour le script Python

    le str(n) dans mon cas devient str(Increments[i]), c'est bien cela ?

  10. #9
    CM63

    Re : Renommer des fichiers avec Python

    C'est ça, oui, je n'avais pas vu l'erreur de syntaxe.

  11. #10
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Rebonjour, j'ai encore une petite question : quand on est écrit "for fichier in Files", on est d'accord que la boucle for prend les fichiers dans l'ordre alphabétique ? Ou alors c'est au hasard ?

  12. #11
    Calvert

    Re : Renommer des fichiers avec Python

    Salut,

    il va prendre les valeurs dans l'ordre où elles sont dans la liste "Files". Comme tu construis cette liste avec os.listdir, il faut aller voir la doc, qui mentionne que "The list is in arbitrary order."

  13. #12
    CM63

    Re : Renommer des fichiers avec Python

    Hello,

    I aggree with Calvert.

  14. #13
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Ok, il ne me reste plus qu'à essayer alors ! Merci.

  15. #14
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Du coup j'ai essayé mon petit script et j'ai reçu des jolis petits messages de la part de ma console

    Code:
      File "C:\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 3052, in run_code
        self.showtraceback()
    
      File "C:\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 1851, in showtraceback
        value, tb, tb_offset=tb_offset)
    
      File "C:\Anaconda\lib\site-packages\IPython\core\ultratb.py", line 1240, in structured_traceback
        self, etype, value, tb, tb_offset, number_of_lines_of_context)
    
      File "C:\Anaconda\lib\site-packages\IPython\core\ultratb.py", line 1157, in structured_traceback
        self, etype, value, elist, tb_offset, number_of_lines_of_context
    
      File "C:\Anaconda\lib\site-packages\IPython\core\ultratb.py", line 511, in structured_traceback
        lines = ''.join(self._format_exception_only(etype, value))
    
      File "C:\Anaconda\lib\site-packages\IPython\core\ultratb.py", line 623, in _format_exception_only
        Colors.Normal, s))
    
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 23: ordinal not in range(128)
    J'arrive pas du tout à déchiffrer ce qu'il me dit, quelqu'un peut-il m'aider ?

    Encore merci à vous !

    En revanche listdir m'a bien rangé les fichiers dans l'ordre alphabétique pour info. Donc c'est plutôt une bonne nouvelle !

    EDIT : j'ai légèrement modifier mon code entre temps, mais a priori j'ai juste modifié "l'esthétique", donc bon... Je le remets quand même :
     Cliquez pour afficher
    Dernière modification par Samuel9-14 ; 21/07/2016 à 10h48.

  16. #15
    CM63

    Re : Renommer des fichiers avec Python

    Bonjour,

    Essaie de mettre ceci au début de ton logiciel :


    Code:
    #!/usr/bin/env python
    #-*- coding: utf-8 -*-

  17. #16
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Ca n'a pas marché :/
    Quand tu dis, "au début de ton logiciel", c'est au début du script, on est d'accord ?
    Pour info je suis sur Python 2.7 avec Anaconda. Et j'utilise Spyder.

    Sinon je ne peux pas utiliser autre chose pour renommer que os.rename ?

  18. #17
    satinas

    Re : Renommer des fichiers avec Python

    Bonjour,
    le code 0xe9 c'est le caractère 'é' en encodage Latin1. Donc je suppose que ton script est en Latin1.
    Python doit considérer qu'un script est encodé en UTF-8 par défaut (ça devient la norme). Il faut donc lui préciser que l'encodage est différent avec la ligne :
    # -*- coding:Latin-1 -*-
    à tester ...

  19. #18
    Calvert

    Re : Renommer des fichiers avec Python

    Peux-tu nous remontrer ton script complet ? C'est un peu à l'aveugle, sinon, et c'est pas facile.

  20. #19
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Citation Envoyé par satinas Voir le message
    Bonjour,
    le code 0xe9 c'est le caractère 'é' en encodage Latin1. Donc je suppose que ton script est en Latin1.
    Python doit considérer qu'un script est encodé en UTF-8 par défaut (ça devient la norme). Il faut donc lui préciser que l'encodage est différent avec la ligne :
    # -*- coding:Latin-1 -*-
    à tester ...
    Toujours pas

    Je remets mon script complet ici :

     Cliquez pour afficher

  21. #20
    satinas

    Re : Renommer des fichiers avec Python

    et un simple script avec la seule ligne print "hello", est ce qu'il est exécuté correctement ?

  22. #21
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Oui, il s'execute bien jusqu'à la ligne os.rename (puisque par exemple, mon explorateur de variable affiche J=45, donc il a tourné jusqu'à cette ligne puis s'arrête).

  23. #22
    Calvert

    Re : Renommer des fichiers avec Python

    Et si tu essayes de faire le os.rename "à la main" dans une console python, avec un des fichiers que tu essayes de renommer ?

  24. #23
    satinas

    Re : Renommer des fichiers avec Python

    le message d'erreur est quand même assez étrange.
    Ne pas oublier les \\ dans les chaînes, ce qui marche chez moi

    Code:
    dir = "c:\\Users\\mydir\\"
    Files = os.listdir(dir)
    for fichier in Files :
      print fichier
      os.rename(dir+fichier, dir+"newname.ext")

  25. #24
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Citation Envoyé par Calvert Voir le message
    Et si tu essayes de faire le os.rename "à la main" dans une console python, avec un des fichiers que tu essayes de renommer ?
    L'erreur apparaît. Je mets ce que j'obtiens dans la console :

     Cliquez pour afficher





    Citation Envoyé par satinas Voir le message
    le message d'erreur est quand même assez étrange.
    Ne pas oublier les \\ dans les chaînes, ce qui marche chez moi

    Code:
    dir = "c:\\Users\\mydir\\"
    Files = os.listdir(dir)
    for fichier in Files :
      print fichier
      os.rename(dir+fichier, dir+"newname.ext")
    J'ai essayé en rajoutant les doubles barres, toujours la même erreur. J'ai aussi ajouté la direction dans les arguments de os.rename, toujours la même erreur
    Dernière modification par Samuel9-14 ; 22/07/2016 à 11h17.

  26. #25
    Ludwig1

    Re : Renommer des fichiers avec Python

    Salut,

    Juste une question, ou une idée,
    Je ne connais pas suffisement Python pour savoir si on peux directement
    coder un accès sur une fonction de MS ( MoveFile ) comme on fait en C ou C++, si c'est le cas, on pourra certainement coder une procédure qui utilisera cette fonction.

    Cordialement

    Ludwig

  27. #26
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Salut,
    Moi je m'y connais pas assez en programmation et langages pour savoir ce qu'est une fonction de MS...
    En revanche tu me fais penser que je pourrais peut-être essayer de coder mon script en C. Mais ça me frustre quand même de pas trouver pourquoi il ne marche pas dans Spyder...

  28. #27
    Ludwig1

    Re : Renommer des fichiers avec Python

    Citation Envoyé par Samuel9-14 Voir le message
    Salut,
    Moi je m'y connais pas assez en programmation et langages pour savoir ce qu'est une fonction de MS...
    En revanche tu me fais penser que je pourrais peut-être essayer de coder mon script en C. Mais ça me frustre quand même de pas trouver pourquoi il ne marche pas dans Spyder...
    Salut,

    J'aime pas faire la pub pour MS (MicroSoft)

    Mais sache que la totalité (ou presque) des langages de programmation utilisent en grande partie les fonctions mises à disposition par MS. ( Pratiquement une nécessité pour programmer sous Windows de MS )

    Certains langages comme C ou C++ et autres, permettent de caller directement des fonctions de MS.

    Regarde Ici:

    https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx


    Cordialement


    Ludwig

  29. #28
    Samuel9-14

    Re : Renommer des fichiers avec Python

    Je vais jeter un œil, ce sera déjà ça d'appris

  30. #29
    Bluedeep

    Re : Renommer des fichiers avec Python

    Citation Envoyé par Ludwig1 Voir le message
    Mais sache que la totalité (ou presque) des langages de programmation utilisent en grande partie les fonctions mises à disposition par MS. ( Pratiquement une nécessité pour programmer sous Windows de MS )
    C'est exact, mais c'est ce qui s'appelle un truisme.

    Par définition tout compilateur , quel que soit le système cible, doit encapsuler ou donner accès aux fonctions exposées par ce système. Dans le cas contraire, on ne pourrait écrire que des programmes ne disposant pas d'entrées-sortie, ce qui serait d'un intérêt très limité.

  31. #30
    Calvert

    Re : Renommer des fichiers avec Python

    Re,

    Je vois que tu as des espaces dans le chemin du répertoire contenant tes fichiers. Il est possible que ça lui pose problème. Si tu essayes de faire un "os.rename" sur un fichier ailleurs dans ton ordinateur, avec un chemin qui ne contient que des "caractères standard", ça donne quoi ?
    (pas d'espace, d'accent, de symbole cabalistique, ...)

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. problème avec TinkerForge avec python
    Par Ken3D dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 02/07/2012, 15h58
  2. Renommer plusieurs fichiers en ligne de commande
    Par fiatlux dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 24/04/2012, 16h22
  3. renommer des fichiers en masse
    Par invite4acfc929 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 27/02/2010, 15h46
  4. Comment renommer 12000 fichiers textes avec Matlab
    Par invitee340ba51 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 18/02/2010, 13h28
  5. Renommer des fichiers dans un sous repertoire
    Par invite0982a4ce dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 22/10/2008, 12h33