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 :

Mettre information spécifique dans une liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 40
    Par défaut Mettre information spécifique dans une liste
    Bonjour à tous,

    Je remercie par avance tous ceux qui pourraient m'aider.

    Mon soucis:
    Je souhaiterai écrire un script dont les étapes sont les suivantes:

    1=>lister les fichiers d'un répertoire
    2=>afficher la date de dernière modification de ces derniers
    3=>récupérer toutes les dates pour les mettre dans une liste
    4=>trier la liste
    5=>trier les fichiers en fonction du tri de la liste
    6=>afficher le tri des fichiers.

    Je bloque sur la phase 3. Je ne trouve pas la solution pour mettre toutes les dates dans une liste.

    Je joins pour aider ce que j'ai déjà réalisé.

    Merci encore pour toutes les suggestions apportées.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    import os
    import time
     
    chemin="\\\arbre\\maison\\fleur\\machin\\truc\\"
     
    L=[]
     
    for item in os.listdir(chemin):
        if os.path.isdir(item)==True:
            L.append(item)
            print (L[-1])
     
    Nomdossier= input ("Entrez le nom dun dossier sur le truc : ")
     
    repertoire=os.path.join(chemin+Nomdossier)
     
    i=0
    while i<len(os.listdir(repertoire)):
     
        if os.path.isdir(repertoire):
            filename=str(os.listdir(repertoire)[i])
            chemin_fichier=os.path.join(repertoire+"\\"+filename)
            print("Vous êtes à %str ." % chemin_fichier)
            date_crea_sous_repertoire=time.ctime(os.path.getctime(chemin_fichier))
            print("répertoire crée le %str" %date_crea_sous_repertoire)
     
            for item in os.listdir(chemin_fichier):
                l1=[]
                l2=[]
                t=0
                while t<len(os.listdir(chemin_fichier)):
                    print (item+" "+time.ctime(os.path.getctime(chemin_fichier)))
                    l1.append(os.listdir(chemin_fichier))
     
                    l2.append(str(l1)+" "+time.ctime(os.path.getctime(chemin_fichier)))
                    t+=1
                    break

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Trier une liste en fonction d'une autre liste a été le sujet de cette discussion récente. Vous pouvez vous inspirer des différentes approches proposées.

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

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par glaine Voir le message
    1=>lister les fichiers d'un répertoire
    Déjà si tu veux lister les fichiers, pourquoi alors testes-tu si l'item de ta boucle est un répertoire? Accessoirement on ne teste jamais if qqchose == True. True, c'est un état, pas une valeur. D'autant plus que certains tests logiquement vrais ne valent pas spécifiquement True
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> s="123"
    >>> s == True
    False
    >>> s is True
    False
    >>> bool(s)
    True
    Tu pourrais tester if bool(qqchose) == True là ça peut le faire mais le plus simple est de faire directement l'évaluation => if qqchose.
    Et accessoirement, pour le second code, si tu fais un os.listdir() d'un truc, c'est que ce truc est censé être un dossier donc je ne vois pas pourquoi tu testes ensuite s'il s'agit bien d'un dossier.

    Citation Envoyé par glaine Voir le message
    Je bloque sur la phase 3. Je ne trouve pas la solution pour mettre toutes les dates dans une liste.
    Je comprends pas, je te vois faire du append() donc tu sais remplir une liste. Que la liste soit remplie avec X ou Y ne change rien. Tu listes le contenu d'un dossier et pour chaque item listé tu stockes sa mtime dans une liste L1 (tu peux utiliser os.stat(fichier).st_mtime) pendant que tu stockes son nom dans une liste L2. Et ensuite, voir le lien de wiztricks qui explique comment trier L2 selon les valeurs de L1.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Si on veut "critiquer" le code, il y a pire:
    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
    L=[]
     
    for item in os.listdir(chemin):
        if os.path.isdir(item)==True:
            L.append(item)
            print (L[-1])
     
    Nomdossier= input ("Entrez le nom dun dossier sur le truc : ")
     
    repertoire=os.path.join(chemin+Nomdossier)
     
    i=0
    while i<len(os.listdir(repertoire)):
     
        if os.path.isdir(repertoire):
            filename=str(os.listdir(repertoire)[i])
    ligne 1-6, on remplit une liste L qui ne sert plus ensuite... Dommage.
    ligne 10: utilisation incorrecte de os.path.join: (chemin+Nomdossier) plutôt que (chemin, Nomdossier)
    ligne 21: pas besoin de tester si repertoire est un repertoire à chaque itération.
    ligne 19 et 22: pourquoi faire autant d'appels à os.listdir? un seul suffirait...

    Enfin les dernières versions de python viennent avec os.scandir qui permet de récupérer efficacement toutes les informations d'un coup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> import os
    >>> for e in os.scandir('.'):
    ...     print (e.name, e.is_dir(), e.stat().st_ctime)
    ...
    et d'en faire une liste de tuples qu'on pourra facilement trier ensuite.

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

Discussions similaires

  1. Mettre un espace dans une liste d'options
    Par smccbbm dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 03/04/2017, 14h10
  2. Recherche spécifique dans une liste
    Par Epohiel dans le forum Général Python
    Réponses: 13
    Dernier message: 23/05/2014, 13h55
  3. [Requete] Mettre le résultat dans une liste modifiable
    Par Rizel dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/05/2007, 13h40
  4. mettre la valeur dans une liste
    Par ulysse031 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 27/02/2007, 11h42
  5. Mettre des images dans une liste déroulante
    Par PrinceMaster77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 01/12/2006, 15h35

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