[Python] Récupérer type MIME d'un fichier CSV

enneibaf -  
 enneibaf -
Bonjour,

Je suis en train de développer un template en Python qui a besoin de vérifier si un fichier est bien de type CSV. Pour cela, j'ai écrit les lignes suivantes :

import mimestypes
ctype, encoding = mimetypes.guess_type('clients.csv')

Si je lance ce code avec un fichier Excel, par exemple, j'obtiens bien le type MIME correspond. Cependant, lorsque je teste avec, justement, un fichier CSV, j'obtiens l'erreur suivante : la fonction guess_type renvoie "None" comme valeur de ctype.

Est-ce que quelqu'un peut m'aider ?
Merci d'avance !
A voir également:

6 réponses

sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
None signifie qu'il n'a pas réussi à deviner le type MIME.

Tu pourrais le forcer toi-même:

import mimestypes
nom = 'clients.csv'
ctype, encoding = mimetypes.guess_type(nom)
if (not ctype) and nom.lower().endswith('.csv'):
    ctype = "text/csv"


Note que pour le CSV, les deux type MIME valides sont text/csv ou text/comma-separated-values (au choix).

Reste l'encodage, que tu ne peux pas deviner. L'information sur l'encodage doit être transmise avec le fichier, sans quoi le fichier est inexploitable.
0
enneibaf
 
Merci pour ta réponse ! Cependant, je suis tout de même étonnée qu'il renvoie "None" alors que le type MIME CSV fait partie des types définis par l'IANA... :-/
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Oui le type MIME CSV est défini, mais il n'arrive pas à le déterminer.

Un exemple: Le texte suivant est-il du CSV ?
Salut, mon coco !


Personne ne peut répondre à ça. Ni un programme, ni un humain.
Tout dépend de ce que c'est censé être.
0
enneibaf
 
OK, donc si je comprends bien, dans le cas du CSV, la fonction
mimetypes.guess_type(nom)
ne pourra jamais déceler si c'en est ou non...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Voilà... mon "Salut, mon coco !" peut très bien être du CVS, ou bien une simple phrase avec une virgule.
0
enneibaf
 
Merci pour toutes ces explications ! :-)
0