1297 votes

Comment obtenir le fichier création & modification dates/heures en Python ?

J’ai un script qui a besoin de faire des trucs basés sur les dates de création et de modification de fichier mais doit fonctionner sur Linux et Windows.

Ce qui est le meilleur moyen de multi-plateforme pour obtenir la création de fichiers & modification dates/heures en Python ?

781voto

Bryan Oakley Points 63365

Vous avez un couple de choix. Pour un, vous pouvez utiliser le système d'exploitation.chemin d'accès.getmtime et les os.chemin d'accès.getctime fonctions:

import os.path, time
print "last modified: %s" % time.ctime(os.path.getmtime(file))
print "created: %s" % time.ctime(os.path.getctime(file))

Votre autre option est d'utiliser os.stat:

import os, time
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(file)
print "last modified: %s" % time.ctime(mtime)

Note: ctime() ne fait pas référence à la création de temps sur les systèmes *nix, mais plutôt la dernière fois que l'inode de la modification des données. (merci à kojiro pour faire plus clair dans les commentaires en fournissant un lien vers un blog intéressant post)

433voto

Christian Oudard Points 13461

La meilleure fonction d’utiliser pour cela est os.path.getmtime(). En interne, il utilise juste `` .

Le module datetime est le meilleur manipulant des horodateurs, ainsi vous pouvez obtenir la date de modification comme un `` objet comme suit :

Exemple d’utilisation :

48voto

Martin Beckett Points 60406

OS.stat http://www.python.org/doc/2.5.2/lib/module-stat.html

Edit : dans le nouveau code, vous devriez probablement utiliser os.path.getmtime() (Merci Christian Oudard)
mais notez que le système renvoie un flottement point valeur time_t avec la seconde fraction (si votre système d’exploitation le supporte)

46voto

Jay Points 20373

Il existe deux méthodes pour obtenir le mod, os.chemin d'accès.getmtime() ou de l'os.stat(), mais le ctime n'est pas fiable multi-plateforme (voir ci-dessous).

os.chemin d'accès.getmtime()

getmtime(chemin de)
*Retour à l'heure de la dernière modification du chemin d'accès. La valeur de retour est un nombre donnant la nombre de secondes depuis l'epoch (voir le module). Soulever des os.erreur si le fichier n' n'existe pas ou est inaccessible. Nouveau dans la version 1.5.2. Modifié dans la version 2.3: Si os.stat_float_times() renvoie la valeur True, le résultat est un nombre à virgule flottante.*

os.stat()

stat(chemin de)
*Effectuer une stat() de l'appel système sur le chemin donné. La valeur de retour est un objet dont l' les attributs correspondent aux membres de la structure stat, à savoir: st_mode (protection bits), st_ino (numéro d'inœud), st_dev (périphérique), st_nlink (nombre de liens en dur), st_uid (ID d'utilisateur du propriétaire), st_gid (ID de groupe de propriétaire), st_size (taille du fichier, en octets), st_atime (temps d'accès le plus récent), st_mtime (temps de contenu les plus récentes la modification), st_ctime (dépendants de la plateforme; heure de la dernière modification des métadonnées sur Unix, ou le temps de la création sur Windows)*:

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L
>>>

Dans l'exemple ci-dessus, vous utilisez statinfo.st_mtime ou statinfo.st_ctime pour obtenir le mtime et ctime, respectivement.

13voto

mithrandi Points 945

retourne un tuple contenant le tag avec et des attributs. La date de modification est sur les deux plates-formes ; malheureusement, sur Windows, `` signifie « moment de la création », tandis que sur POSIX, il signifie « temps de changer ». Je ne suis pas au courant de toute façon pour obtenir l’heure de création sur les plates-formes POSIX.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X