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

Affichage des résultats du sondage: J'ai coché cette option par erreur!

Votants
4. Vous ne pouvez pas participer à ce sondage.
  • Comment annuler un sondage?

    3 75,00%
  • A quoi servent les sondages?

    1 25,00%
Python Discussion :

Afficher une séquence d'images sous la forme : "name.@.ext start end step"


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut Afficher une séquence d'images sous la forme : "name.@.ext start end step"
    Bonjour,

    Je suis graphiste et je commence tout juste à m'intéresser à la programmation.
    Pour débuter, j'aimerais apprendre à créer des petits utilitaires "Python" de gestion de fichiers "images".
    Par exemple, si j'ai dans un répertoire une liste de fichiers du type :

    image.0002.tga, image.0003.tga, image.0004.tga, image.0005.tga

    Quelle est la forme de script la plus simple pour m'afficher cette liste sous la forme :

    image.@@@@.tga 2 5 1

    Dans un deuxième temps, je voudrais pouvoir faire différentes opérations sur ces séquences d'images :
    Copier/coller, déplacer, renommer, créer des liens...

    Merci pour votre aide.

  2. #2
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    Salut,

    Ça devrait marcher si tous les fichiers sont cohérents :

    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
     
    import os
     
    # se place dans le répertoire
    os.chdir("/chemin/du/dossier")
    # récupère la liste des fichiers présents dans le répertoire
    fichiers = os.listdir("./")
     
    # recupère la liste des numéros
    num = [int(f.split(".")[1]) for f in fichiers]
    print num
     
    f = fichiers[0].split(".")
    # données qui t'intéressent :
    masque  = f[0] + "." + "@"*len(f[1]) + "." + f[2]
    minimum = min(num)
    maximum = max(num)
    pas     =  (maximum-minimum+1) / len(num)
     
    print masque
    print minimum
    print maximum
    print pas

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut Cohérence des fichiers
    Cela marche très bien, j'ai juste eu à rajouter des virgules après les instructions "print" pour avoir tout sur la même ligne.

    Par contre, est-ce compliqué de spécifier au programme d'ignorer les fichiers qui ne seraient pas des séquences?
    En effet, cela ne fonctionne pas quand il y a d'autres fichiers (exemple : "name.txt") dans le répertoire.

    Il ne fonctionne pas non plus si il y a deux séquences d'images avec des noms différents.

    J'aimerais pouvoir régler ces problèmes moi même mais je n'ai pas les clefs pour les résoudre.
    Je n'ai pas trouvé de documentation ou de tutoriaux spécifiques à ce genre de requêtes (affichage et traitement de fichiers/séquences).

    En tout cas merci pour cette réponse rapide.

  4. #4
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    et voilà !

    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
    25
    26
    27
     
     
    import os
     
    # récupère la liste des fichiers présents dans le répertoire
    fichiers = os.listdir("./")
     
     
    # tri
    classement = {}                    # initialise le classement
    for f in fichiers:                 # pour chaque fichier
        ff = f.split(".")                  # découpage suivant les points
        if len(ff) == 3:                   # si 3 morceaux
            cle = (ff[0],len(ff[1]),ff[2])     # clé = nom, taille du numéro, extension
            if classement.has_key(cle):            # si clé existe dans classement
                classement[cle].append(int(ff[1])) # ajout du numéro
            else:
                classement[cle] = [int(ff[1])]     # ajout de la clé au classement
     
     
    # recupère les données
    for cle, valeurs in classement.items():
        masque  = cle[0] + "." + "@"*cle[1] + "." + cle[2]
        minimum = min(valeurs)
        maximum = max(valeurs)
        pas     =  (maximum-minimum+1) / len(valeurs)
        print masque, minimum, maximum, pas

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut
    Merci.

    En plus, ça m'aide vraiment d'avoir les commentaires lignes par lignes.

    Maintenant je vais chercher un peu pour créer les codes de mes petits utilitaires (copier/déplacer/renommer des séquences d'images).
    "os.rename", "shutil.move", "shutil.copy" me semblent être de bonnes pistes à suivre, en gardant comme base le code de ton post.

  6. #6
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Tu pourras trouver ici peut-être des infos qui t'intéressent:
    http://python.developpez.com/faq/?pa...hierRepertoire

Discussions similaires

  1. Afficher une liste de texte sous forme de colonnes
    Par stevensavior dans le forum VB.NET
    Réponses: 3
    Dernier message: 25/01/2015, 22h23
  2. Selection une partie s'image sous forme ronde
    Par nanouchg dans le forum Images
    Réponses: 1
    Dernier message: 12/03/2011, 13h23
  3. CIMg : Afficher une image sous la forme d'une matrice
    Par nicoblade77240 dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 26/02/2009, 10h46
  4. programmer une séquence d'images
    Par sino dans le forum C++Builder
    Réponses: 5
    Dernier message: 14/02/2006, 11h57
  5. Reconnaître une position dans une séquence d'images
    Par echataig dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 23/01/2006, 17h44

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