Problème de fin de ligne

Le
michel
Bonjour,

J'avais un programme Python qui marchait parfaitement sous Linux. J'ai dû le
basculer sous Windows et je n'arrive pas à m'en sortir avec les caractères
de fin de ligne.
Le programme crée un fichier ASCII CSV qui s'ouvre parfaitement sous WordPad
ainsi que sous Excel mais pas sous le bloc note.
Le saut de ligne n'est pas effectuée.

Le code est celui-ci
i = open(TMP_DIR + 'Entree.txt','rb')
o = open(BASE_DIR + 'Entree.txt','wb')
o.write('"Purchase order number"t"Purchase order item"tPlantt"Storage
location""')
o.writelines(i.readlines())
o.close()
i.close()

Comment générer la bonne séquence à la ligne "o.write('"Purchase order
number"
et surtout à la ligne "o.writelines(i.readlines())"

Merci de votre aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Laurent Pointal
Le #588744
Bonjour,

J'avais un programme Python qui marchait parfaitement sous Linux. J'ai dû le
basculer sous Windows et je n'arrive pas à m'en sortir avec les caractères
de fin de ligne.
Le programme crée un fichier ASCII CSV qui s'ouvre parfaitement sous WordPad
ainsi que sous Excel mais pas sous le bloc note.
Le saut de ligne n'est pas effectuée.

Le code est celui-ci
i = open(TMP_DIR + 'Entree.txt','rb')
o = open(BASE_DIR + 'Entree.txt','wb')
o.write('"Purchase order number"t"Purchase order item"tPlantt"Storage
location"..."rn')
o.writelines(i.readlines())
o.close()
i.close()

Comment générer la bonne séquence à la ligne "o.write('"Purchase order
number"
et surtout à la ligne "o.writelines(i.readlines())"

Merci de votre aide




Première idée: Essaie d'ouvrir en 'rU' et 'wU' et laisse Python se
débrouiller avec les fins de ligne (à moins que tu ne veuilles générer
des fichiers à partir de Linux pour les transférer ensuite sous Windows...).

Laurent Pointal
Le #588743
Bonjour,

J'avais un programme Python qui marchait parfaitement sous Linux. J'ai dû le
basculer sous Windows et je n'arrive pas à m'en sortir avec les caractères
de fin de ligne.
Le programme crée un fichier ASCII CSV qui s'ouvre parfaitement sous WordPad
ainsi que sous Excel mais pas sous le bloc note.
Le saut de ligne n'est pas effectuée.

Le code est celui-ci
i = open(TMP_DIR + 'Entree.txt','rb')
o = open(BASE_DIR + 'Entree.txt','wb')
o.write('"Purchase order number"t"Purchase order item"tPlantt"Storage
location"..."rn')
o.writelines(i.readlines())
o.close()
i.close()

Comment générer la bonne séquence à la ligne "o.write('"Purchase order
number"
et surtout à la ligne "o.writelines(i.readlines())"

Merci de votre aide


Deuxième idée: readlines() retire normalement les fins de lignes... mais
si tu as ouvert en binaire, je ne sais pas s'il est capable d'identifier
les fins de lignes avec rn (alors qu'ouvert en texte, ça devrais être
automatiquement transformé en n) - regarde ce que sort readlines().

Si readlines() n'aime pas le binaire, un petit découpage à la mano via
split('rn') devrais le faire.

A priori writelines() lui ne fait pas de traitement sur les fins de lignes.

Alex Marandon
Le #593847
michel wrote:

Bonjour,

J'avais un programme Python qui marchait parfaitement sous Linux. J'ai dû
le basculer sous Windows et je n'arrive pas à m'en sortir avec les
caractères de fin de ligne.
Le programme crée un fichier ASCII CSV qui s'ouvre parfaitement sous
[...]


A tout hasard, as-tu jete un oeil a
http://docs.python.org/lib/module-csv.html ?

Publicité
Poster une réponse
Anonyme