Y a-t-il des utilisateurs Python sous OSX dans la salle ?
j'ai rencontré un petit problème dans un script utilisé par MacCvsX pour
ajouter une entrée dans un .cvsignore.
Le script en question ouvre le fichier en mode "a+" pour
- lire le contenu par readlines()
- ajouter un élément au tableau
- tronquer le fichier
- écrire le tableau modifié dans le fichier
Or, readlines() après l'ouverture retourne un tableau vide.
Testé ici avec Python 2.4 (#1, Feb 24 2005, 11:32:53)
J'ai corrigé le problème en ouvrant le fichier en lecture, puis en le
rouvrant ensuite en écriture, mais ce problème m'inquiète.
Comment je pourrais savoir si c'est un bug ?
L'un d'entre vous l'aurait-il rencontré ou pourrait me le confirmer ?
Merci.
On Sat, 30 Apr 2005 13:26:57 +0200 Eric Jacoboni wrote:
| Donc, en gros, avec le mode +, c'est à toi de gérer le curseur pour | que l'instruction soit cohérente et, si on suppose que le mode majeur | "a" positionne à la fin, il n'est pas cohérent de vouloir lire | immédiatement après avoir ouvert un fichier...
Oui, avec le reste de ton développement, ce n'est pas illogique. C'est même logique, pour ne pas faire de double négation :)
Gérer un repositionnement au début après l'ouverture en "a+" ne me gène pas en soi. Le problème c'est qu'entre les différents intervenants de ce fil il y a des résultats différents entre mac et win/linux. D'où mon questionnement sur un bug possible.
-- Sébastien Kirche
On Sat, 30 Apr 2005 13:26:57 +0200
Eric Jacoboni <jaco@neottia.net> wrote:
| Donc, en gros, avec le mode +, c'est à toi de gérer le curseur pour
| que l'instruction soit cohérente et, si on suppose que le mode majeur
| "a" positionne à la fin, il n'est pas cohérent de vouloir lire
| immédiatement après avoir ouvert un fichier...
Oui, avec le reste de ton développement, ce n'est pas illogique.
C'est même logique, pour ne pas faire de double négation :)
Gérer un repositionnement au début après l'ouverture en "a+" ne me gène
pas en soi. Le problème c'est qu'entre les différents intervenants de
ce fil il y a des résultats différents entre mac et win/linux. D'où mon
questionnement sur un bug possible.
On Sat, 30 Apr 2005 13:26:57 +0200 Eric Jacoboni wrote:
| Donc, en gros, avec le mode +, c'est à toi de gérer le curseur pour | que l'instruction soit cohérente et, si on suppose que le mode majeur | "a" positionne à la fin, il n'est pas cohérent de vouloir lire | immédiatement après avoir ouvert un fichier...
Oui, avec le reste de ton développement, ce n'est pas illogique. C'est même logique, pour ne pas faire de double négation :)
Gérer un repositionnement au début après l'ouverture en "a+" ne me gène pas en soi. Le problème c'est qu'entre les différents intervenants de ce fil il y a des résultats différents entre mac et win/linux. D'où mon questionnement sur un bug possible.
-- Sébastien Kirche
Eric Jacoboni
In article , SÈbastien Kirche wrote:
Gérer un repositionnement au début après l'ouverture en "a+" ne me gène pas en soi. Le problème c'est qu'entre les différents intervenants de ce fil il y a des résultats différents entre mac et win/linux. D'où mon questionnement sur un bug possible.
La doc Python 2.3 dit que le mode des fonctions open() ou file() a la même signification que celui de fopen().
La norme POSIX de fopen() dit explicitement:
a+ or ab+ or a+b Append; open or create file for update, writing at end-of-file.
On notera la présence du ';' après Append, ce qui indique bien que ce positionnement final est le point essentiel.
Après, que le comportement varie en fonction des plateformes, ça peut sembler curieux, effectivement. Il faudrait voir si la définition du langage prévoit ce genre de différences : si ce n'est pas le cas, j'appelerais ça un bug, oui.
-- jaco
In article <20050430135424.2d945123@obelix.seki.fr>, SÈbastien Kirche
<sebastien.kirche.no@spam.free.fr.invalid> wrote:
Gérer un repositionnement au début après l'ouverture en "a+" ne me gène
pas en soi. Le problème c'est qu'entre les différents intervenants de
ce fil il y a des résultats différents entre mac et win/linux. D'où mon
questionnement sur un bug possible.
La doc Python 2.3 dit que le mode des fonctions open() ou file() a la
même signification que celui de fopen().
La norme POSIX de fopen() dit explicitement:
a+ or ab+ or a+b
Append; open or create file for update, writing at end-of-file.
On notera la présence du ';' après Append, ce qui indique bien que ce
positionnement final est le point essentiel.
Après, que le comportement varie en fonction des plateformes, ça peut
sembler curieux, effectivement. Il faudrait voir si la définition du
langage prévoit ce genre de différences : si ce n'est pas le cas,
j'appelerais ça un bug, oui.
Gérer un repositionnement au début après l'ouverture en "a+" ne me gène pas en soi. Le problème c'est qu'entre les différents intervenants de ce fil il y a des résultats différents entre mac et win/linux. D'où mon questionnement sur un bug possible.
La doc Python 2.3 dit que le mode des fonctions open() ou file() a la même signification que celui de fopen().
La norme POSIX de fopen() dit explicitement:
a+ or ab+ or a+b Append; open or create file for update, writing at end-of-file.
On notera la présence du ';' après Append, ce qui indique bien que ce positionnement final est le point essentiel.
Après, que le comportement varie en fonction des plateformes, ça peut sembler curieux, effectivement. Il faudrait voir si la définition du langage prévoit ce genre de différences : si ce n'est pas le cas, j'appelerais ça un bug, oui.