Mensajes: 155
Temas: 57
Registro en: Jan 2018
Reputación:
0
Hole, ¿cómo están?
Yo parece seguido con mis dudas, en este caso les pediría 2 favores:
1): ¿Les parece que voy bien con el código...?
2): ¿Como debo hacer para grabar nuevamente lista en el archivo.?
Código:
def modificar(codigo):
archivo = abrir_lectura()
mod_rec = input('\n Ingrese nuevo recordatorio:')
lista = archivo.readlines()
archivo.close()
for linea in lista:
tmp = linea.split()
if tmp[0] == codigo:
tmp[1] = mod_rec
lista = ' '.join(tmp)
break
# archivo.write(" ".join((str(codigo[0]) , mod_rec)))
Debo aclarar que el código existe en el archivo porque ya lo verifique en otra función.
Desde ya muchas gracias por el tiempo que le dediquen.
Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Mensajes: 74
Temas: 12
Registro en: Aug 2017
Reputación:
4
si el fichero no es muy grande, puedes llevar todas las lineas/registros a memoria en una lista, modificar el elemento dentro de la lista y volver a grabar toda la lista, haciendo la operación inversa a la lectura.
si es muy grande tendras que utilizar el puntero fichero.seek(), ubicarte al principio de la linea y cambiarlo, pero puedes tener problemas con el desplazamiento del resto de lineas. En este caso es conveniente trabajar con lineas de tamaño fijo.
saludos.
Mensajes: 155
Temas: 57
Registro en: Jan 2018
Reputación:
0
(29-03-2018, 02:09 PM)calvicius escribió: si el fichero no es muy grande, puedes llevar todas las lineas/registros a memoria en una lista, modificar el elemento dentro de la lista y volver a grabar toda la lista, haciendo la operación inversa a la lectura.
si es muy grande tendras que utilizar el puntero fichero.seek(), ubicarte al principio de la linea y cambiarlo, pero puedes tener problemas con el desplazamiento del resto de lineas. En este caso es conveniente trabajar con lineas de tamaño fijo.
saludos.
Gracias, tomaré en cuenta lo que propones. -
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Mensajes: 155
Temas: 57
Registro en: Jan 2018
Reputación:
0
Hola, Francisco, más abajo dejo la función que hice y me funciona. -
Cita:Aunque tal vez, dependiendo lo que quieras hacer, te sea más útil emplear una base de datos SQLite.
En cuanto a esto, te explico lo que me pasa, tengo en mente desde mucho pero muchos años que quiero hacer mis propias bases de datos, seguramente como en muchos foros donde expuse esto lo tomaron como una utopía pero como soñar no cuesta nada sigo con mi proyecto, no tengo ninguna intención de competir con las grandes bases de datos, para nada es que desde que conocí las tablas en foxpro me atrajo la idea y cuando llego a estudiar los archivos me detengo y voy a fondo(le presto mucha mas atención que el resto de los temas). -
Código:
def modificar(codigo):
archivo = abrir_lectura()
arch_temp = open("temp.txt", "w")
mod_rec = input('\n Ingrese nuevo recordatorio:')
for linea in archivo:
tmp = linea.split()
if tmp[0] == codigo:
tmp[1] = mod_rec
arch_temp.write(" ".join(tmp) + '\n')
else:
arch_temp.write("".join(linea))
archivo.close()
arch_temp.close()
os.remove("recordar.txt")
os.rename("temp.txt", "recordar.txt")
Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-