[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 !
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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
  2. 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
  3. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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