J'ai le code simple:
f = open('out.txt','w')
f.write('line1\n')
f.write('line2')
f.close()
Le code fonctionne sous Windows et donne la taille du fichier 12 bytes
, et Linux donne 11 bytes
La raison est nouvelle ligne
Sous Linux c'est \n
et pour gagner c'est \r\n
Mais dans mon code, je spécifie la nouvelle ligne comme \n
. La question est de savoir comment faire python conserver la nouvelle ligne sous la forme \n
toujours, et pas vérifier le système d'exploitation.
Vous devez ouvrir le fichier en mode binaire , c'est-à-dire wb
au lieu de w
. Sinon, les caractères de fin de ligne sont convertis automatiquement en caractères spécifiques au système d'exploitation.
Voici un extrait de Python référence à propos de open()
.
La valeur par défaut consiste à utiliser le mode texte, qui peut convertir les caractères '\ n' en une représentation spécifique à la plate-forme en écriture et en lecture à la lecture.
Vous pouvez toujours utiliser le mode texte et forcer le retour à la ligne avec le mot clé newline.
f = open("./foo",'w',newline='\n')
Testé avec Python 3.4.2.
Edit: Cela ne fonctionne pas dans Python 2.7.