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 :

trier une liste de répertoire par date de création


Sujet :

Python

  1. #1
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut trier une liste de répertoire par date de création
    Bonjour,
    Je cherche a trier une liste de répertoire par date de création.
    Y a t il une méthode qui permet de tester cette particularité en listant le contenu d'une dossier.

    actuellement je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def listdirectory(self,path='c:'): 
            """Fonction de listage d'un dossier"""
            fichier=[] 
            l = glob.glob(path+"\\*") 
            for i in l: 
                if os.path.isdir(i):
                    fichier.append(os.path.split(i)[1])
                else: 
                    pass
     
            return fichier
    merci d'avance

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Avec ça tu as tout pour le faire:
    os.stat
    list.sort

  3. #3
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    merci, je regarde ca!

    merci encore

  4. #4
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    Bon c'est cool, ca fonctionne bien
    sauf pour list.sort() qui revoie NONE.
    Il faut passer par sorted(list), qui dans ce cas renvoie une nouvelle liste des éléments trier.

    J'ai une question supplémentaire.
    Voici le problème : Je liste un dossier en triant les éléments par date de création.
    j'affiche la liste dans une listbox.
    Je sélectionne une valeur que je désire déplacer d'un dossier a un autre.

    Je liste aussi ce deuxième dossier et j'affiche la liste dans une autre listbox.

    J'aimerai modifier l'attribut 'date de création' de l'éléments déplacé pour que celui ci se mette automatiquement a la fin de ma liste.
    Comment puis je le faire?

    Merci d'avance

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Citation Envoyé par airod
    sauf pour list.sort() qui revoie NONE.
    (7)
    The sort() and reverse() methods modify the list in place

    Je ne pense pas qu'il soit possible de changer la date de création, par contre tu peux adapter ta fonction de tri peut-être, par exemple en gérant une liste de fichiers qui doivent être mis à la fin

  6. #6
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    merci de la pécision pour le fonctionnement de sort et reverse.
    J'ai pensé a la chose ce matin seulement.
    Bref, de toute facon, sort ne convenait pas pour mon dico.

    sinon, je ne peux pas faire une fonction qui vient mettre en dernière place l'item sélectionné, car le refraichissement est cotrolé par un thread. en fait les dossier sont sondé en permanence pour actualiser les nouveaux dossiers créés au fur et a mesure.
    L'important etant qu'il soit listé dans l'ordre de création.

    Peut être qu'il faut faire une fonction de copy/remove, plutot qu'une simple fonction de move.
    c'est trés dommage car ca fait perdre du temps d'éxécution.

    Il doit bien y avoir un moyen.... je continue mes recherches.

    merci

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    Comme dit, si tu modifies ta fonction de tri ça peut fonctionner, tu fais une liste pour signaler que tels éléments « n'ont pas la priorité », et tu t'arranges pour que la fonction de comparaison les mette à la fin (tout en évitant les conflits quand aucun des 2 n'a la priorité)

  8. #8
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    Merci pour la piste
    je pensais faire plus simple.

    En modifiant ma fonction de deplacement de dossier pour en fait la faire en trois etapes.
    1- deplacement du dossier dans un dossier tier.
    2- création d'un nouveau dossier dans le dossier cible
    3- déplacement du contenu du dossier source dans le dossier créé ci dessus
    4- effacement du dossier source (qui pour le coup sera vide)

    je ne sais pas si ca va être trés rapide mais je trouve ca assez simple.

    je suis quand même preneur des autres idées.
    j'explorerai aussi ta solution, merci

    a+

  9. #9
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    Sinon une methode plus simple.
    Tu as une fonction qui fonctionne ton problème est que quand tu deplaces ton fichier ton fichier garde sa date de création.
    La solution est simple il faut créer un nouveau fichier, donc au lieu de déplacer fait une copie (création d'un nouveau fichier avec une date de création = date d'aujourd'hui) puis supprime ton fichier d'origine

  10. #10
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Points : 891
    Points
    891
    Par défaut
    merci, c'est ce que j'ai fait, mais en deux temps pour des raisons propre au fonctionnement du logiciel.
    ce qui me dérange c'est la redondance d'opération pour une simple fonction de déplacement.

    a+

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

Discussions similaires

  1. Trier une liste par date
    Par autre dans le forum C
    Réponses: 10
    Dernier message: 12/02/2012, 22h16
  2. Réponses: 22
    Dernier message: 23/07/2010, 10h25
  3. Réponses: 5
    Dernier message: 03/01/2008, 16h07
  4. trier une liste par colonnes
    Par Sniper37 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 26/10/2007, 10h19
  5. Trier une liste de tuples par le nième élément de tuples
    Par vdumont dans le forum Général Python
    Réponses: 2
    Dernier message: 04/05/2007, 20h45

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