2010-06-01 7 views
6

Je suis en train de remplacer du texte dans un fichier avec une valeur. Tout fonctionne bien, mais quand je regarde le fichier après son achèvement, il y a une nouvelle ligne (vide) après chaque ligne dans le fichier. Y a-t-il quelque chose que je puisse faire pour empêcher cela de se produire?Remplacer le texte dans le fichier avec Python

Voici le code comme je l'ai:

import fileinput 
    for line in fileinput.FileInput("testfile.txt",inplace=1): 
     line = line.replace("newhost",host) 
     print line 

Merci, Aaron

Répondre

3

Chaque line est lu dans le fichier avec sa nouvelle ligne de fin, et l'impression ajoute le sien.

Vous pouvez:

print line, 

qui n'ajoutera une nouvelle ligne après la ligne.

+0

Cela a fonctionné préfet! Merci pour l'aide – Aaron

+0

Donc, il se avère que je rencontre un problème. Pour une raison quelconque, lorsque je fais ce texte remplacer quelque chose d'autre qui se passe dans le fichier. J'utilise un programme appelé TextWrangler pour l'édition de texte et quand j'essaie d'ouvrir le fichier, il me dit "Une erreur d'E/S inattendue est survenue (Code d'erreur MacOS: -36) .Avant cela," find and replace "s'ouvre bien. – Aaron

+0

Je viens juste de voir que lorsque j'essaie d'afficher le fichier original depuis le terminal, il me demande si je veux voir parce que c'est un fichier binaire, c'est peut-être le problème? – Aaron

2

Le print line ajoute automatiquement un saut de ligne. Vous feriez mieux de faire un sys.stdout.write(line) à la place.

0

print ajoute un caractère de nouvelle ligne:

caractère A '\ n' est écrit à la fin, à moins que la déclaration d'impression se termine par une virgule. C'est la seule action si l'instruction contient juste le mot-clé print.

Questions connexes