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> Tous conseils pour me faire démarrer car je frappe un peu de mur. p> p>
8 Réponses :
Vous pouvez utiliser
os.walk
Vous devriez regarder le fonction OS.WALK , ainsi que Os.stat , qui peut vous laisser faire quelque chose comme:
os.path.getmtime () code> est un raccourci pratique pour
os.stat (Full_Path) .st_mtime code>
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 code> renvoyé son nom de fichier, mais avant l'appel sur
os.stat code>, 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 code> dans un blocage / sauf le bloc.
ELI, comment puis-je trouver le dernier fichier modifié dans chaque sous-dossier et l'imprimer?
Utilisez OS.PATH.WALK () Code>
pour traverser l'arborescence de répertoire et OS.Stat () .st_mtime code>
pour obtenir le MTIME des fichiers. p>
la fonction que vous passez à os.path.walk () code> (le
visitez code> paramètre) Il suffit de garder une trace du plus grand Mime à laquelle on voit et où il l'a vu . p>
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:
Nice conseil - cela m'a aidé sur un petit projet que je travaillais.
J'utilise Qu'est-ce que je manque ici? fort> p> p> chemin = r "c: \ users \ wvkitter \ dektop" code>:
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
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
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)