Rechercher : dans
Par :

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

Dernière réponse le 3 jan 2008 à 17:30:12 enneibaf, le 3 jan 2008 à 16:59:26 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [Python] Récupérer type MIME d'un fichier CSV » dans :
[Python] Lire et écrire des fichiers CSV Voir LIRE ET ÉCRIRE DES FICHIERS CSV Python www.python.org, dans sa version 2.4 supporte de facto le format CSV (comma-separated values: valeurs séparées par des virgules). La Library Reference est certes très explicative à ce sujet, mais uniquement...
Excel - Convertir fichier(s) CSV / XLS VoirComme dit dans le titre, cette application convertit des fichiers CSV en fichiers XLS N’est pas nécessaire pour Excel 2007, ce dernier faisant la conversion automatiquement La conversion n’ayant pas de mise en forme, en cas de modification...
Fichier CSV VoirFormat CSV Un fichier CSV est un fichier tableur, contenant des données sur chaque ligne séparés par un caractère de séparation (généralement une virgule ou un point-virgule). Comment lire un fichier CSV ? Il peut être lu avec un tableur tel que...
Formats et extensions de fichiers VoirQu'est-ce qu'un type MIME ? Le type MIME (Multipurpose Internet Mail Extensions) est un standard qui a été proposé par les laboratoires Bell Communications en 1991 afin d'étendre les possibilités du courrier électronique (mail), c'est-à-dire de...
Fichier SIT VoirFormat SIT Un fichier SIT (StuffIT) est un fichier compressé provenant d'un ordinateur Apple sous le système Mac OS. Le logiciel de prédilection pour ouvrir ce type de fichiers sous Mac est StuffIt Expander (payant). Pour décompresser un fichier...

1

sebsauvage, le 3 jan 2008 à 17:07:14

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.

Répondre à sebsauvage

2

enneibaf, le 3 jan 2008 à 17:10:29

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... :-/

Répondre à enneibaf

3

sebsauvage, le 3 jan 2008 à 17:14:42

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.

Répondre à sebsauvage

4

enneibaf, le 3 jan 2008 à 17:20:23

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...

Répondre à enneibaf

5

sebsauvage, le 3 jan 2008 à 17:28:27

Voilà... mon "Salut, mon coco !" peut très bien être du CVS, ou bien une simple phrase avec une virgule.

Répondre à sebsauvage

6

 enneibaf, le 3 jan 2008 à 17:30:12

Merci pour toutes ces explications ! :-)

Répondre à enneibaf