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

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. Modérateur
    Voilà... mon "Salut, mon coco !" peut très bien être du CVS, ou bien une simple phrase avec une virgule.
    1. 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...
      1. Modérateur
        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.
        1. 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... :-/
          1. Modérateur
            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.

            Discussions similaires

            question pix mot caché

            7 réponses