caractères ^M lors de copies de fichiers

caractères ^M lors de copies de fichiers - Python - Programmation

Marsh Posté le 21-07-2010 à 11:33:41    

Bonjour,
 
Je copie un fichier ligne par ligne, dans le but d'effectuer ensuite des modifications à la volée sur certaines lignes:
 

Code :
  1. file=open('input','r')
  2. output=open('output.txt','w')
  3. for line in file.read().split('\n'):
  4.     output.write(line+'\n')


 
Ce code est minimaliste et facile à comprendre...
Et pourtant, lorsque j'ouvre le fichier output avec vim, je vois des caractères '^M' apparaître à la fin de chaque ligne (alors que je ne les vois pas apparaître sur le fichier source, toujours en l'ouvrant avec vim)
D'ou vient le problème?D'un encodage surement? Y- a t-il une option à passer quelque part pour éviter ça?
 
Merci d'avance

Reply

Marsh Posté le 21-07-2010 à 11:33:41   

Reply

Marsh Posté le 21-07-2010 à 13:48:24    

J'ai ouvert mon fichier de référence avec Notepad++ et j'ai fait View -> Show Symbol -> Show all characters
J'ai pu constater qu'à la fin de chaque ligne, j'avais le caractère '\n' (normal) mais aussi le caractère '\r'.
C'est ce caractère qui est interprété bizarrement par python.
Au lieu de juste recopier le caractère '\r' tel qu'il est, il le remplace par ^M.
 
Lorsque j'introduis un passage à la ligne sous Notepad++, il insere automatiquement '\r\n' au lieu de juste '\n' alors que l'éditeur de texte par défaut sous eclipse ne le fait pas...
 
Après avoir retiré tous les '\r' de mon fichier de référence, je n'ai plus les caractères ^M dans le fichier destination.
 
J'ai donc 2 questions :
-quelqu'un sait-il comment ignorer les caractères '\r' lors de la recopie de la chaine dans un fichier ? ligne.replace('\r','') ?
-Est ce qu'il existe une option sous notepad ++ pour ne pas insérer de '\r' lorsque l'on passe à la ligne?

Reply

Marsh Posté le 21-07-2010 à 13:58:00    

tu peux convertir le fichier en "unix" ou "windows" dans notepad++ (dans le menu: "format" ).

 

Tu dois être dans le "mauvais" mode.


Message édité par art_dupond le 22-07-2010 à 08:02:14

---------------
oui oui
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed