Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: sil en 26 de Abril 2014, 08:52

Título: Manejo de archivos con python sobreescribir una sola línea
Publicado por: sil en 26 de Abril 2014, 08:52
Necesito sobrescribir en una sola linea! pero si utilizo el "w" me borra absolutamente todo!!
y si utilizo el  r+ tambien

un ejemplo super simple:
en el archivo tengo los siguientes valores:

10
11
14
13
resulta que quiero cambiar el 14 por un 12! no se como sustituir el valor por el que ahora quiero!
Título: Re:Manejo de archivos con python
Publicado por: sil en 26 de Abril 2014, 08:56
me urge demasiaado!! por favor necesito ayudaaa!!
Título: Re:Manejo de archivos con python
Publicado por: Alex Rodríguez en 26 de Abril 2014, 19:31
Hola, por favor no repitas la misma pregunta en diferentes hilos del foro. Sobre la cuestión que comentas, lo primero que necesitas saber es qué línea del archivo quieres modificar. Supongamos que quieres modificar aquellas líneas que contengan 14 y cambiar ese 14 por un 12. Una forma de hacerlo sería leer los datos del archivo y guardarlos en un array, pero allí donde se detecte un 14 en vez de guardar el 14 guardamos el 12. Después escribimos el fichero (con lo cual destruimos lo existente anteriormente) con el contenido del nuevo array. No he probado el código con lo cual no te puedo asegurar que funcione a la primera. La idea sería un código así:

Código: [Seleccionar]
from array import *
# Lectura del contenido del fichero
try:
ins = open( "file.txt", "r" )
contenidoLinea = []
for line in ins:
if line == 14:
        insertamos = 12
    else:
        insertamos = line

    contenidoLinea.append( insertamos )
ins.close()
finally:
f.close()
except IOError:
pass



# Escritura del nuevo contenido del fichero
try:
# Escribimos el fichero
f = open("file.txt", "w")
try:
for idx, val in enumerate(contenidoLinea):
f.writelines(contenidoLinea[idx]) # Escribimos la línea
finally:
f.close()
except IOError:
pass

Título: Re:Manejo de archivos con python
Publicado por: sil en 02 de Mayo 2014, 05:09
Disculpa  nunca he participado de foros jaja es que realmente me urgía tener una respuesta.. no vuelve a pasar :) pero muchas gracias realmente la lógica de su respuesta de destruir y volver a  escribir me ayudo mucho. muchas gracias :D
Título: Re:Manejo de archivos con python
Publicado por: Alex Rodríguez en 03 de Mayo 2014, 09:08
De nada, ya me extrañaba que no hubieras respondido  :D