Changer une date en une date aléatoire - Python

Résolu
Arko - 18 déc. 2023 à 22:19
jee pee Messages postés 39636 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 - 18 déc. 2023 à 23:27

Bonsoir,

Je cherche à faire un script en Python.

(Année) J'ai un fichier "input.txt" où il y a un tas de choses, mais dedans à chaque ligne il y a "2023-12-07T23:59:11Z", et j'aimerais que mon script supprime le "2023" en le remplaçant soit par 2019, 2020, 2021, 2022 ou laisser 2023.

(Mois) Maintenant j'aimerais qu'il change le "12" soit par 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11 ou laisser 12.

(Jour) Après, qu'il change le "07" soit par 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28.

Donc bien sûr je veux que le script reste dans la meme structure donc: année-mois-jourT23:59:11Z (on ne touche pas aux heures, minutes, secondes)

Puis le script va sauvegarder dans un fichier par exemple "output.txt" tout les nouveaux changements.
J'ai essayé de codé tout seul mais je n'y arrive pas quelqu'un pourrait m'aider svp ?

Bonne soirée, Cordialement.

1 réponse

jee pee Messages postés 39636 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 25 avril 2024 9 235
Modifié le 18 déc. 2023 à 23:41

Bonjour,

Généralement on n'écrit pas le code à ta place. On te demande de poster ton code pour voir ce qui ne va pas. Tu peux le poster pour voir dans quelle direction tu es parti. On voit que tu essaies de contourner le soucis des mois de 31 jours en t’arrêtant à 28, mais utiliser une fonction date pourrait éviter cela.

Dans le cas présent j'ai eu l'envie d'écrire le code, alors en voilà un :

import datetime
import random

start_date = datetime.date(2019, 1, 1)
end_date   = datetime.date(2023, 12, 31)

with open('input.txt', 'r') as fici, open('output.txt', 'w') as fico:
   for ligne in fici:
      random_date = start_date + (end_date - start_date) * random.random()
      ligne=ligne.replace("2023-12-07", random_date.strftime("%Y-%m-%d"))
      fico.write(ligne)

ref date aléatoire entre 2 dates : https://blog.finxter.com/how-to-generate-a-random-date-between-two-dates/


1