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 :

Rechercher un fichier par date de modif


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Rechercher un fichier par date de modif
    Salut ,

    Je recherche un moyen de rechercher dans un dossier specifique le fichier .txt (ou autre extention de mon choix) le plus recent (le derniers modifier)....

    Merci de votre aide !!!

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Méthode bourrin : un os.path.walk en ne vérifiant que les .txt (avec un splitext() pour vérifier que c'est un .txt), qui sauvegarde le meilleur dans l'argument, et pour savoir s'il est meilleur, on passe getmtime().

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Et en version "noob" ça donne quoi lol...

    Un petit exemple serait simpa.

    Merci d'avance...

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Tu sais utiliser os.path.walk ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Non , je sait même pas c'est quoi mdr....

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est une fonction qui prend en argument les dossiers à parcourir récursivement, un fonction de visiste et un objet qui sera passé à la fonction : http://docs.python.org/lib/module-os.path.html

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Un petit exemple serait le bienvenue si possible...

    Car je voie bien comment rechercher un fichier par extention... mais par rapport à la date de modif...

  8. #8
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    getmtime() retourne le temps de modification, tu sélectionnes celui qui est le plus récent, comme pour un max()

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Si tu as un exemple ça m'aiderai beaucoup car la j'y arrive vraiment pas...

    merci...

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Je vais essayer de retrouver un code d'exemple d'os.path.walk.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    J'avais tester un style de recherche par extention comme celui la. Visiblement il ne marche pas , je n'arrive pas a comprendre pourquoi. Il m'affiche l'arboresence avec tout les fichiers, il ne les tri donc pas par extention.

    Don c la je suis dans le flou...

    import os

    path = "C:/folder"
    pattern = "*.jpg;*.doc"

    def printFiles(dirList, spaceCount, typeList):
    for file in dirList:
    for ext in dirList:
    if file.endswith(ext):
    print "/".rjust(spaceCount+1) + file
    break

    def printDirectory(dirEntry, typeList):
    print dirEntry[0] + "/"
    printFiles(dirEntry[2], len(dirEntry[0]), typeList)


    extList = []
    for ext in pattern.split(";"):
    extList.append(ext.lstrip("*"))


    for directory in os.walk(path):
    printFiles
    printDirectory (directory, extList)

  12. #12
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    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
    import os.path, fnmatch
     
    def listFiles(root, patterns='*'):
     
      # Si plusieurs motifs (*.txt par exemple) sont acceptées,
      # elles sont séparées par un point-virgule
      pattern_list = patterns.split(';')
      # Cette liste est l'argument propagé par os.path.walk
      arg = []
     
      def visit(arg, dirname, files):
        # Append to arg.results all relevant files (and perhaps folders)
        for name in files:
          fullname = os.path.normpath(os.path.join(dirname, name))
          if os.path.isfile(fullname):
            for pattern in pattern_list:
              if fnmatch.fnmatch(name, pattern):
                arg.append(fullname)
                break
     
      os.path.walk(root, visit, arg)
      return arg
     
    for fichier in listFiles(".", '*.py'):
      print fichier
    Là, il cherche tous les .py, il faut le modifier pour que arg contienne le nom du fichier et la date de modification.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Apparement ça depasse mes compétence , je vais essayé de trouver un autre solution.


    Car la dans ta solution il ne m'affiche rien du tout. On ne définit meme pas le chemin du dossier , donc je comprend pas trop...


    merci...

  14. #14
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est une fonction, avec un exemple d'utilisation à la fin.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    En fait ce serait bien que d'abort je recherche dans mon dossier tout les fichiers .txt, que j'enregistre leurs nom dans un fichier pour ensuite les tester par date de modification.

    J'ai fait a peu pres ça pour la recherche pas extention , mais j'arrive juste a affichier l'arboresence des fichier .txt, pour enregistrer leurs nom c'est une autre histoire.

    import os
    path = "C:\Documents and Settings\Administrateur\Mes documents\ScriptSMTP"
    pattern = "*.txt"


    def printFiles(dirList, spaceCount, typeList):
    for file in dirList:
    for ext in typeList:
    if file.endswith(ext):
    print "/".rjust(spaceCount+1) + file
    break


    def printDirectory(dirEntry, typeList):
    print dirEntry[0] + "/"
    printFiles(dirEntry[2], len(dirEntry[0]), typeList)


    extList = []
    for ext in pattern.split(";"):
    extList.append(ext.lstrip("*"))


    for directory in os.walk(path):
    printDirectory(directory, extList)
    print extList
    print

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    En fait les nom des fichiers je les ai deja , vue que le NtBackup crée 10 fichier texte et reprend au 1 une fois passer le 10. Je peut donc simplement tester entre ces 10 fichier lequel est le plus recent je pensse...

    avec la fonction getmtime()

    Cependant il me sort une valeur décimal... Cela correespond t_il a des seconde ou une unité de temps ? ?

    PS = J'ai tester sur un fichier que je vien de crée , la valeur afficher est plus grande qu'un fichier deja crée depuis plusieurs jours..

    EDIT : Apparement cette valeur correcpond a la date de modif et nom au temps depuis lequel le fichier est crée , donc la valeur la plus grande correspond au fichier le plus recent. (Dite si je me trompe)...

  17. #17
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est quoi ça : for directory in os.walk(path):
    Je parle de os.path.walk, pas de os.walk qui n'a pas les mêmes possibilités.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Un truc que je comprend pas trop en python aussi c'est au niveau des tableau...

    Par exemple j'ai :

    while (i < 4):

    if res > Tab[i] :
    res = res
    else:
    res = Tab[i]
    i = i + 1
    Toute mes valeurs sont en un tableau, j'arrive a faire des opération , des if , des print sur mes valeur de tableau. Mais des qu'elle sont dans une boucle while ça me sort "IndexError: list index out of range"

    Je voie pas trop quoi...

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Le python complique quand meme pas pas de truk. En C par exemple ce genre de boucle marche nikel, la il faut batailler ... c'est quand meme assez découragant.

  20. #20
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ah non, ça simplifie, Python. Là, on ne peut pas t'aider, tu ne nous donnes pas assez d'information. Et c'est une autre question

Discussions similaires

  1. [Batch] Liste de fichiers par date de modification et copie
    Par eKOMS dans le forum Scripts/Batch
    Réponses: 9
    Dernier message: 07/08/2012, 15h38
  2. Mettre dans l'ordre des fichiers par date de modification
    Par ftrap dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/07/2012, 00h15
  3. [XL-2003] Lire des fichiers par date de modification
    Par K2O2$ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/05/2010, 19h11
  4. Recherche de fichiers par dates en php
    Par essse dans le forum Langage
    Réponses: 3
    Dernier message: 24/02/2009, 11h59
  5. [JFileChooser] Trier les fichiers par date de modification
    Par stounouslous dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 10/05/2008, 12h47

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