889 votes

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

<p>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.</p> <p>Ce qui est le meilleur moyen de <strong>multi-plateforme</strong> pour obtenir la création de fichiers &amp; modification dates/heures en Python ?</p>

672voto

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)

369voto

Christian Oudard Points 13461
<p>La meilleure fonction d’utiliser pour cela est <a href="http://docs.python.org/library/os.path.html#os.path.getmtime">os.path.getmtime()</a>. En interne, il utilise juste <code></code> .<p>Le module datetime est le meilleur manipulant des horodateurs, ainsi vous pouvez obtenir la date de modification comme un <code></code> objet comme suit :</p><pre><code></code></pre><p>Exemple d’utilisation :</p><pre><code></code></pre></p>

47voto

Martin Beckett Points 60406
<p>OS.stat <a href="http://www.python.org/doc/2.5.2/lib/module-stat.html">http://www.python.org/doc/2.5.2/lib/module-stat.html</a></p> <p>Edit : dans le nouveau code, vous devriez probablement utiliser <a href="http://docs.python.org/library/os.path.html#os.path.getmtime">os.path.getmtime()</a> (Merci Christian Oudard)<br>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)</p>

38voto

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.

11voto

mithrandi Points 945
<p><code></code>retourne un tuple contenant le tag avec <code></code> et <code></code> des attributs. La date de modification est <code></code> sur les deux plates-formes ; malheureusement, sur Windows, <code></code> 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.</p>

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