fred wrote:
> hg <hg@nospam.org> a écrit :
>
>> Non: Pars du principe que c'est du binaire (donc ouvre en binaire) ...
>> puis change d'avis si besoin est.
> Bon, je fais une réponse groupée, hein, m'en voulez pas.
>
> Il était une fois un fichier de paramètres qui contenait le type de
> données à lire dans un fichier : ascii, binaire, et pour le binaire, le
> format, int, float, double, plus tout un tas de choses follement
> amusantes, j'en passe et des meilleurs.
>
> Or il arrive que l'utilisateur (moi en l'occurence) à force de modifs à
> droite par-ci, à gauche par-là, en arrive à se mélanger les doigts,
> et que même s'il est précisé ascii dans le sus-dit fichier de paramètres,
> et bien c'est en fait un fichier binaire qui passait par là qui est lu.
> Ou l'inverse.
> Donc plus loin dans le code, badaboum, patatra, ça râle, toussa.
>
> Les fichiers en question sont des tableaux lus :
>
> - par readlines() quand c'est de l'ascii ;
>
> - par fread() de scipy.io.numpyio quand c'est du binaire (parce que
> c'est ici qu'on m'a dit de l'utiliser et que j'en suis très content, na).
>
> Donc l'ouvrir tout le temps en binaire, admettons.
>
> Mais ça ne résout guère le problème.
> L'appel de readlines() ou fread() est fonction de ce que l'utilisateur
> a bien gentiment tapé dans son fichier de paramètres, mais point du type
> réel du fichier en question.
>
> Donc à ce stade, je vois deux solutions :
>
> - soit me tenter des try/except sur fread ou readlines, et encore, je ne
> suis pas sûr que le résultat soit probant ; disons que j'aimerais bien
> qu'il me donne la réponse avant qu'il se soit tapé tout le fichier,
> parce qu'il peut être gros, le bougre.
>
> - soit utiliser un file() pythonné, ce qui me plaît mieux.
>
> Ceci dit, en posant ma question, je pensais trouver une fonction native
> toute faite pour ce genre de chose. C'est la raison pour.
>
> Merci à tous.
>
> J'investiguerai demain.
>
> --
> http://scipy.org/FredericPetit
Pas sûr de tout comprendre.
Mes 2 centimes:
1) Tu gardes tes anciennes routines et ne touches pas leurs codes
2) Tu rajoutes une fonction que tu appelles d'abord (ex: def Is_Binary
(file) ) qui te retourne oui ou non.
Cette dernière ouvre le fichier en binaire et le "parse" pour tenter de
deviner si le fichier est a passer côter binaire ou ascii ... puis le
ferme.
hg