Comment obtenir la date et l'heure de création et de modification d'un fichier en Python ?

J'ai un script qui doit faire certaines choses basées sur les dates de création et de modification des fichiers, mais qui doit fonctionner sous Linux et Windows.

Quel est le meilleur moyen, toutes plates-formes confondues, d'obtenir les dates et heures de création et de modification de fichiers en Python ?

Vous avez plusieurs possibilités. D'abord, vous pouvez utiliser les fonctions [os.path.getmtime][1] et [os.path.getctime][2] :

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

L'autre option est d'utiliser [os.stat][3] :

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 au temps de création sur les systèmes *nix, mais plutôt à la dernière fois que les données de l'inode ont changé. (merci à kojiro d'avoir clarifié ce fait dans les commentaires en fournissant un lien vers un article de blog intéressant)

[1] : https://docs.python.org/library/os.path.html#os.path.getmtime [2] : https://docs.python.org/library/os.path.html#os.path.getctime [3] : https://docs.python.org/library/os.html#os.stat

Commentaires (3)

os.stat https://docs.python.org/2/library/stat.html#module-stat

edit : Dans un code plus récent vous devriez probablement utiliser [os.path.getmtime()][1] (merci Christian Oudard) mais notez qu'il retourne une valeur en virgule flottante de time_t avec des fractions de secondes (si votre OS le supporte).

[1] : http://docs.python.org/library/os.path.html#os.path.getmtime

Commentaires (2)

Il existe deux méthodes pour obtenir le temps mod, os.path.getmtime() ou os.stat(), mais le ctime n'est pas fiable sur toutes les plates-formes (voir ci-dessous).

os.path.getmtime()

getmtime(chemin)
Retourne l'heure de la dernière modification du chemin. La valeur de retour est un nombre donnant le nombre de secondes depuis l'époque (voir le module time). Lève os.error si le fichier n'existe pas 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 True, le résultat est un nombre à virgule flottante.

os.stat()

stat(chemin)
Exécute un appel système stat() sur le chemin donné. La valeur de retour est un objet dont les attributs correspondent aux membres de la structure stat, à savoir : st_mode (protection, bits protection), st_ino (numéro d'inode), st_dev (périphérique), st_nlink (nombre de liens durs), st_uid (ID d'utilisateur du propriétaire), st_uid (ID utilisateur du propriétaire), st_gid (ID groupe du propriétaire), st_size (taille du fichier, en octets), st_atime (heure du dernier accès), st_mtime (heure de la dernière modification du contenu) modification la plus récente du contenu), st_ctime (dépend de la plate-forme ; heure de la modification la plus récente des métadonnées sous Unix, ou heure de création sous 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 utiliseriez statinfo.st_mtime ou statinfo.st_ctime pour obtenir le mtime et le ctime, respectivement.

Commentaires (0)