2010-06-01 24 views
6

Estoy tratando de reemplazar texto en un archivo con un valor. Todo funciona bien, pero cuando miro el archivo una vez completado, hay una línea nueva (en blanco) después de cada línea en el archivo. ¿Hay algo que pueda hacer para evitar que esto suceda?Reemplazar texto en archivo con Python

Aquí está el código que tengo que:

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

Gracias, Aaron

Respuesta

3

Cada line se lee del archivo con su nueva línea final, y la impresión agrega una propia.

Puede:

print line, 

que no se añada una nueva línea después de la línea.

+0

¡Esto funcionó prefecto! Gracias por la ayuda – Aaron

+0

Así que resulta que me estoy encontrando con un problema. Por alguna razón, cuando hago este texto, reemplace algo más le está sucediendo al archivo. Utilizo un programa llamado TextWrangler para la edición de texto y cuando intento abrir el archivo, me dice: "Ocurrió un error inesperado de E/S (código de error de MacOS: -36). Antes de este" buscar y reemplazar ", se abre bien. ¿Qué podría estar causando algo así? – Aaron

+0

Acabo de ver que cuando trato de ver el archivo original desde la terminal me pregunta si quiero verlo porque es un archivo binario. ¿Tal vez este es el problema? – Aaron

2

El print line añade automáticamente una nueva línea. Será mejor que hagas un sys.stdout.write(line) en su lugar.

0

print añade un carácter de nueva línea:

Un carácter '\ n' se escribe al final, a menos que la sentencia de impresión termina con una coma. Esta es la única acción si la declaración contiene solo la palabra clave print.

Cuestiones relacionadas