2017-05-19 2 views
0

Je veux créer une fonction qui va chercher des métadonnées de fichiers JPG en utilisant exifread, sélectionnez la première date de Image DateTime et imprimez-la. Voici le code que j'ai jusqu'à présent (pas grand-chose: D):Python - Première date de création de fichier JPG

def GetExifTagsForFile(filename): 
    file = open(filename,'rb') 
    tags = exifread.process_file(file) 

Habituellement, je encore créer une liste où ajouter toutes les dates, puis en utilisant min sélectionnez la première date. Cependant, ici j'essaye de fonctionner avec IfdTag pour lequel ce genre de solution ne fonctionnera pas. Le codage de IfdTag est %Y:%m:%d %H:%M:%S. J'ai également essayé de changer le format du tag en datetime en utilisant strdtime, cependant, cette solution ne fonctionne que pour les chaînes. Avez-vous des suggestions pour résoudre mon problème?

+1

Sans connaître la structure de 'IfdTag', il est difficile de dire. – SiHa

+0

Désolé, mon mauvais. Le format est '% Y:% m:% d% H:% M:% S'. – Kirill

Répondre

0

Comme indiqué par @SiHa cela dépend de la façon dont votre tag est codé. Je pense que cela devrait être "YYYY:MM:DD HH:MM:SS". Dans ce cas, apportez vos balises premier à chaîne, puis au format datetime, où vous pouvez utiliser min():

from datetime import datetime 

datetime_objects = [datetime.strptime(str(t['IfdTag'].values), '%Y:%m:%d %H:%M:%S') for t in tag_list] 
min(datetime_objects) 
+0

Merci pour votre réponse! Malheureusement, il semble que 'strptime' ne fonctionne pas avec' IfdTag'. – Kirill

+0

J'ai inclus une conversion au format chaîne. Cela a fonctionné pour moi au moins. – Nyps