Foros del Web » Programando para Internet » Python »

Leer y escribir fichero a la vez

Estas en el tema de Leer y escribir fichero a la vez en el foro de Python en Foros del Web. Hola a todos, me gustaría generar un script, donde tengo que leer un fichero de entrada y escribir en ese mismo fichero de entrada, es ...
  #1 (permalink)  
Antiguo 04/03/2011, 20:24
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Leer y escribir fichero a la vez

Hola a todos, me gustaría generar un script, donde tengo que leer un fichero de entrada y escribir en ese mismo fichero de entrada, es decir, leo un linea la modifico y la tengo que escribir en el fichero, esto con un fichero auxiliar sabría como hacerlo, pero sin fichero auxiliar, creo que no se puede hacer, o no se si en python existe alguna forma, o si alguien me puede decir la forma mejor para hacerlo.

El problema que tengo es si tengo que generar un fichero auxiliar, donde sería la mejor opción en /tmp, que se supone que si que se tendrá permisos para escribir ahí...

Haber si alguien me puede comentar algo.

Muchas gracias!
  #2 (permalink)  
Antiguo 04/03/2011, 20:44
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Leer y escribir fichero a la vez

Postea tu código para ver que tratas de hacer.

Para hacer operaciones in-place con archivos te recomendaría hacer esto:
1.- Cargar archivo a memoria
2.- Hacer las operaciones que quieras en memoria
3.- Guardar lo que tienes en memoria al archivo original (o sea hacer un volcado).
  #3 (permalink)  
Antiguo 05/03/2011, 12:18
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer y escribir fichero a la vez

Muchas gracias! justo asi es como he solucionado el problema, ahora el problema que tengo es si el archivo, es demasiado grande... generalmente los ficheros que se introducen son texto y se podrán mantener en memoria pero si no... existe un problema.

Una solución sería comprobar antes el tamaño del fichero, ¿no? podría haber otra solución.

El programa que tengo que realizar es un script, que va leyendo un fichero de entrada y va buscando apariciones que cumplen una expresión regular, si cumple con la expresión hay que cambiarlo por otra linea, y guardarlo... con este código me funciona:


Código:
lectura = open("prueba",'r')
# Leemos el fichero.
lineas = lectura.readlines()
escritura = open("prueba","w")

for linea in lineas:
	print "Linea: " + linea
	escritura.write("Funciona")
Pero no se si existe una mejor solución.
  #4 (permalink)  
Antiguo 05/03/2011, 22:27
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Leer y escribir fichero a la vez

Si existe una mejor solución:
Lo mas simple que podrías hacer, es usar sed o gawk
  #5 (permalink)  
Antiguo 06/03/2011, 13:18
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Leer y escribir fichero a la vez

Sobre leer y escribir en el mismo archivo ya conversamos antes en este mismo foro, hay algunos puntos a tener en cuenta: http://www.forosdelweb.com/f130/prob...9/#post3457763

Pero concuerdo con razpeitia que lo mejor en tu caso es usar sed o awk.


Saludos.
  #6 (permalink)  
Antiguo 08/03/2011, 07:12
 
Fecha de Ingreso: junio-2009
Mensajes: 65
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Leer y escribir fichero a la vez

Hola, gracias a los dos por contestar, quería preguntar otra cosa que estoy teniendo problemas, lo que tengo que realizar escribir en un directorio un fichero auxiliar con la salida, pero... como puedo comprobar que tengo permisos de escritura en el directorio donde voy a crear el fichero auxiliar, por que me pasan un fichero del tipo prueba.txt y ahi debo de dejar la salida, en este caso, debería de escribir el fichero auxiliar en el directorio actual pero como puedo comprarbar con python los permisos del directorio actual.

Lo estaba haciendo con os.access, pero me han comentado que eso es de bajo nivel, existe alguna abtracción para esto, alguna libreria en python.

Por otro lado quería preguntar como puedo pasar en python 3600 segundos, a segundos, minutos y hora, he estado mirando y parece ser que el timedelta me lo permite, pero es la mejor opción.

Muchas gracias!
  #7 (permalink)  
Antiguo 08/03/2011, 18:58
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Leer y escribir fichero a la vez

Cita:
Iniciado por moisesvs Ver Mensaje
como puedo comprobar que tengo permisos de escritura en el directorio donde voy a crear el fichero auxiliar.
Lo mejor en este caso seria intentarlo y ver si arroja alguna excepción. (Try...catch).

Cita:
Iniciado por moisesvs Ver Mensaje
Por otro lado quería preguntar como puedo pasar en python 3600 segundos, a segundos, minutos y hora, he estado mirando y parece ser que el timedelta me lo permite, pero es la mejor opción.
Si estas seguro que tus horas no deben de pasar de 24 entonces basta con un
Código Python:
Ver original
  1. import time
  2. print time.strftime("%H:%M:%S", time.gmtime(segundos))

Si por lo contrario quieres tener mas de 24 horas entonces haz un simple:
Código Python:
Ver original
  1. def TimeFormat(n):
  2.     hrs = (n // 3600)
  3.     mins = (n // 60) % 60
  4.     segs = n % 60
  5.     return "%d:%02d:%02d" % (hrs, mins, segs)

Etiquetas: fichero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:50.