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 !!!
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 !!!
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().
Et en version "noob" ça donne quoi lol...
Un petit exemple serait simpa.
Merci d'avance...
Tu sais utiliser os.path.walk ?
Non , je sait même pas c'est quoi mdr....
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
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...
getmtime() retourne le temps de modification, tu sélectionnes celui qui est le plus récent, comme pour un max()
Si tu as un exemple ça m'aiderai beaucoup car la j'y arrive vraiment pas...
merci...
Je vais essayer de retrouver un code d'exemple d'os.path.walk.
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)
Là, il cherche tous les .py, il faut le modifier pour que arg contienne le nom du fichier et la date de modification.
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
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...
C'est une fonction, avec un exemple d'utilisation à la fin.
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
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)...
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.
Un truc que je comprend pas trop en python aussi c'est au niveau des tableau...
Par exemple j'ai :
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"while (i < 4):
if res > Tab[i] :
res = res
else:
res = Tab[i]
i = i + 1
Je voie pas trop quoi...
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.
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![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager