Bonjour à tous,
Je n'arrive pas a trouver de commande pour renommer un fichier avec le date et l'heure, quelqu'un saurait-il comment faire?
Merci d'avance
Tugdual 87
Bonjour à tous,
Je n'arrive pas a trouver de commande pour renommer un fichier avec le date et l'heure, quelqu'un saurait-il comment faire?
Merci d'avance
Tugdual 87
Salut,
La date s'obtient avec le module datetime[0] et sera formatée avec strftime
Les chemins de fichier se gèrent avec os.path[1]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 >>> from datetime import datetime >>> d = datetime.now() >>> d datetime.datetime(2016, 2, 13, 9, 15, 48, 559888) >>> f = d.strftime('-%Y-%m-%d-%H-%M-%S') >>> f '-2016-02-13-09-15-48'
Voilà, ya plus qu'a.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 >>> from os import path >>> p = path.splitext('/chemin/fichier/nom.jpg') >>> p ('/chemin/fichier/nom', '.jpg') >>> new = p[0] + f + p[1] >>> new '/chemin/fichier/nom-2016-02-13-09-15-48.jpg'
[0] https://docs.python.org/3/library/da...etime.datetime
[1] https://docs.python.org/3/library/os...module-os.path
Bonjour,
Pour renommer un fichier, c'est: os.rename(anciennom, nouveaunom)
Pour changer les dates de modification et de dernier accès à une date précise:
NB: l'EPOCH change avec l'OS. A ma connaissance, c'est le 1/1/1970 pour Linux et le 1/1/1601 pour Windows. Mais timestamp semble s'en débrouiller.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 from datetime import datetime dt = datetime(2016,1,1,8,9) # le 1/1/2016 à 8h 9mn tps = int(dt.timestamp()) # nb de seconde depuis l'EPOCH de l'OS os.utime(nomdufichier, (tps, tps)) # modif des 2 dates du fichier
Il existe une 3ème date, mais elle dépend du système de fichier, et il est même possible qu'elle n'existe pas toujours. Si c'est Windows, c'est la "date de création" du fichier, mais je ne sais pas la changer. Voir peut-être avec les modules spécifiques Windows comme Pywin32.
Dans tous les cas, on peut lire les infos d'un fichier avec os.stat(nomdufichier). On peut ainsi obtenir les 3 dates (en secondes depuis l'EPOCH) du fichier comme suit:
Pour avoir les dates en clair, on peut utiliser datetime.fromtimestamp(). Par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 print("Date de création: ", os.stat(nomdufichier).st_ctime) print("Date de modification: ", os.stat(nomdufichier).st_mtime) print("Date du dernier accès: ", os.stat(nomdufichier).st_atime)
Il y a tout de même des subtilités dans ce genre de manip: voir la doc pour plus d'infos!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ct = os.stat(nomdufichier).st_ctime print(datetime.fromtimestamp(ct)) # date de création mt = os.stat(nomdufichier).st_mtime print(datetime.fromtimestamp(mt)) # date de modif at = os.stat(nomdufichier).st_atime print(datetime.fromtimestamp(at)) # date de dernier accès
Salut VinsS,
Merci pour ta réponse, mais je n'arrive pas à combiné les 2 codes que tu m'as donné sans avoir des erreures, pourrais-tu me les combiné stp?
Merci d'avance
Tugdual
Désolé, je n'avais compris qu'il s'agissait d'intégrer la date dans le nom du fichier. Je fais ça très souvent et voilà comment je fais:
Ça donne quelque chose comme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 nom, ext = os.path.splitext(fichier) dateiso = time.strftime('%Y_%m_%d_%H_%M_%S') os.rename(fichier, nom + '_' + dateiso + ext)
xxxxx.txt ==> xxxxx_2016_02_13_07_15_03.txt
L'intérêt d'avoir la date à ce format est que la liste des fichiers triée en ordre alphabétique correspond aussi à l'ordre chronologique.
Ca marche, merci beaucoup à vous deux
Tugdual
Partager