Cette création n’est pas disponible

Elle a peut-être été retirée par son auteur ou masquée par la modération.

Retour à Explorer

Renommer des photos d’après leur date de prise de vue

Clarisse MendyApprenti · Publié le 30 octobre 2026
1 prompt Code et scripts
Résultat obtenu Résultat du parcours

Le chemin parcouru

« Un script qui renomme plusieurs centaines de photos d’après leur date de prise de vue, sans jamais écraser un fichier. »

Clarisse Mendy

Le prompt

Écris un script Python qui renomme toutes les photos JPEG d’un dossier d’après leur date de prise de vue (EXIF), au format AAAA-MM-JJ_HHMMSS.jpg. Si deux photos ont la même date, ajoute un suffixe -2, -3. Ajoute un mode simulation, actif par défaut, qui affiche les changements sans rien renommer. N’utilise que Pillow.

Le moment clé

Vérification

Vérifier le résultat avant de continuer

J’ai lancé la simulation sur une copie de 30 photos, dont deux prises en rafale à la même seconde. Les noms proposés étaient justes et aucune photo n’était écrasée : je n’ai renommé les vraies photos qu’ensuite.

Le résultat obtenu

Le prompt et le résultat1 / 1

Demande

Écris un script Python qui renomme toutes les photos JPEG d’un dossier d’après leur date de prise de vue (EXIF), au format AAAA-MM-JJ_HHMMSS.jpg. Si deux photos ont la même date, ajoute un suffixe -2, -3. Ajoute un mode simulation, actif par défaut, qui affiche les changements sans rien renommer. N’utilise que Pillow.

Résultat et choix retenu

Voici le script. Il lit la date de prise de vue avec Pillow, affiche les nouveaux noms en mode simulation et ne renomme qu’avec l’option --renommer.

from pathlib import Path
from PIL import Image
import sys

DATE_EXIF = 36867  # DateTimeOriginal


def lire_date(photo):
    with Image.open(photo) as image:
        valeur = image.getexif().get_ifd(0x8769).get(DATE_EXIF)
    if not valeur:
        return None
    return valeur.replace(":", "-", 2).replace(" ", "_").replace(":", "")


def renommer(dossier, simulation=True):
    pris = set()
    for photo in sorted(Path(dossier).glob("*.jpg")):
        date = lire_date(photo)
        if not date:
            print("Sans date :", photo.name)
            continue
        nom, n = f"{date}.jpg", 2
        while nom in pris or (photo.with_name(nom).exists() and photo.name != nom):
            nom, n = f"{date}-{n}.jpg", n + 1
        pris.add(nom)
        print(photo.name, "→", nom)
        if not simulation:
            photo.rename(photo.with_name(nom))


if __name__ == "__main__":
    renommer(sys.argv[1], simulation="--renommer" not in sys.argv)

Reproductions de la communauté

3 reproductions · 67 % de succès · Dernier essai le 3 nov. 2026

Léa Martin◐ Résultat partiel
ChatGPT · GPT-5

La structure est la bonne ; quelques détails diffèrent et demandent une seconde passe.

1 retour détaillé sur les 3 essais déclarés.

Comparer les modèles testés
Réussites déclarées par configuration
Outil et modèleEssaisRéussisSuccès
ChatGPT · GPT-53267 %

Commentaires

Koffi Amoussou

Précisez peut-être qu’il faut installer Pillow avant le premier lancement : j’ai cherché un moment.

Hugo Girard

Le suffixe en cas de doublon m’a évité une belle erreur : 40 photos prises en rafale pendant un mariage.

Créez un compte ou connectez-vous pour commenter.

Retour aux créations

Partager mon essai

Votre résultat

Signaler un contenu