Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de fin de ligne

3 réponses
Avatar
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"\tPlant\t"Storage
location"..."\r\n')
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

3 réponses

Avatar
Laurent Pointal
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...).

Avatar
Laurent Pointal
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.

Avatar
Alex Marandon
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 ?