10
votes

Trouver le dernier fichier édité dans Python

J'ai un ensemble de dossiers et je souhaite pouvoir exécuter une fonction qui trouvera le fichier le plus récemment modifié et dites-moi le nom du fichier et le dossier dans lequel il s'agit.

Disposition du dossier: < / p> xxx

Tous conseils pour me faire démarrer car je frappe un peu de mur.


0 commentaires

8 Réponses :


1
votes

Vous pouvez utiliser

os.walk


0 commentaires

21
votes

Vous devriez regarder le fonction OS.WALK , ainsi que Os.stat , qui peut vous laisser faire quelque chose comme: xxx


4 commentaires

os.path.getmtime () est un raccourci pratique pour os.stat (Full_Path) .st_mtime


Je reçois une erreur lorsque je l'exécute à partir de mon répertoire d'origine: Oserror: [errno 2] Aucun fichier ou répertoire de ce type: './.config/chromium/singletonlock'


@armandino: Je suppose que la question est qu'il y a un fichier de verrouillage créé puis supprimé très rapidement. S'il a été supprimé après os.walk renvoyé son nom de fichier, mais avant l'appel sur os.stat , vous vous attendriez à voir une telle erreur. Si vous avez besoin d'exécuter un tel script sur des annuaires qui ont des fichiers supprimés de telle manière, je vous recommanderais d'envelopper l'appel à OS.Stat dans un blocage / sauf le bloc.


ELI, comment puis-je trouver le dernier fichier modifié dans chaque sous-dossier et l'imprimer?



4
votes
  • Utilisez OS.WALK pour répertorier les fichiers
  • Utilisez OS.Stat pour obtenir le fichier modifié de fichier (st_mtime )
  • Mettez à la fois des horodatages et des noms de fichiers dans une liste et triez-la par Timeestamp, le plus grand horlogetage est le dernier fichier édité.

0 commentaires

1
votes

Utilisez OS.PATH.WALK () pour traverser l'arborescence de répertoire et OS.Stat () .st_mtime pour obtenir le MTIME des fichiers.

la fonction que vous passez à os.path.walk () (le visitez paramètre) Il suffit de garder une trace du plus grand Mime à laquelle on voit et où il l'a vu .


0 commentaires

9
votes

Il aide à envelopper la répertoire intégrée à la fonction de fonction qui ne donne que des chemins complets vers des fichiers. Ensuite, vous pouvez simplement prendre la fonction qui renvoie tous les fichiers et choisissez celui qui a la durée de modification la plus élevée: xxx


1 commentaires

Nice conseil - cela m'a aidé sur un petit projet que je travaillais.



0
votes

J'utilise chemin = r "c: \ users \ wvkitter \ dektop" : xxx

Qu'est-ce que je manque ici?


0 commentaires

4
votes

Si quelqu'un cherche une seule ligne de ligne de le faire:

latest_edited_file = max([f for f in os.scandir("path\\to\\search")], key=lambda x: x.stat().st_mtime).name


1 commentaires

Bienvenue dans le débordement de pile. Bien que ce code puisse répondre à la question, fournissant un contexte supplémentaire concernant la raison et / ou la manière dont ce code répond à la question améliore sa valeur à long terme. Comment répondre



2
votes

Pour plusieurs fichiers, si quelqu'un est venu ici pour cela:

import glob, os

files = glob.glob("/target/directory/path/*/*.mp4")
files.sort(key=os.path.getmtime)

for file in files:
   print(file)


0 commentaires