Autor Tema: Modificar/borrar contenido de un archivo de texto.  (Leído 2543 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Modificar/borrar contenido de un archivo de texto.
« en: 09 de Noviembre de 2021, 16:21:18 »
Hola gente ¿Cómo están?
La pregunta es ¿la única manera de modificar el contenido de un archivo .txt es pasar todo a un archivo temporal sin lo que queremos modificar/borrar y luego agregar la línea modificada y x último renombrar el archivo temporal?.-
Por mucho que busco todos les echan la culpa al sistema operativo y dicen que no hay otra manera, estoy muy consiente que mi enamoramiento con las bases de datos me hacen plantear estas cosas:
Si tengo un súper puedo tener esta cantidad de registros (bases de datos venta),
200 clientes x día x 10 producto(promedio) x cada cliente = 2000 x 300 días al año = 600.000 x 5
años = 3.000.000, desconozco cuanto pesa en memoria 3.000.000 de registros pero no creo que sea poco.-
Tengo un montón de conjetura que me dan vuelta en la cabeza pero no quiero escribir demasiado porque seguramente me dirían, “Dani no aclares que oscurece”.-
Bueno lo dejo planteado haber que se puede hacer, tengo el código terminado con la búsqueda y la escritura en archivo pero no se si tiene sentido subirlo.-
Desde ya gracias y un fuerte abrazo desde Argentina.
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.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Modificar/borrar contenido de un archivo de texto.
« Respuesta #1 en: 10 de Noviembre de 2021, 06:17:03 »
Nunca he intentado modificar un fichero sin sobreescribirlo.
Las funciones que buscas creo que están relacionadas con estos métodos:

file.seek(offset)
Con seek puedes colocarte en la posición que quieras del fichero, para luego leer o escribir.
https://www.w3schools.com/python/ref_file_seek.asp

file.truncate()
https://www.w3schools.com/python/ref_file_truncate.asp

Saludos.
« Última modificación: 10 de Noviembre de 2021, 06:20:14 por Picuino »

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Modificar/borrar contenido de un archivo de texto.
« Respuesta #2 en: 10 de Noviembre de 2021, 11:20:33 »
Hola ¿Cómo están?
Gracias Picuino por ocuparte, esta bueno lo de truncate x lo menos para saber que existe pero no es
lo que estoy buscando, si recibiera 2 parámetros seria lo que busco pero no es este el caso.-
Esta de mas este ejemplo pero lo pongo para que se entienda claramente lo que necesito.-

Citar
0001 Tomate Arcor lata x 400 grs.             $   101.50
0002 Extracto de tomate Molto                  $    79.50
0003 Mayonesa Helmmans DP x 250 grs.    $    89.50
0004 Jabón en polvo Ala x 400 g. común    $    79.50
0005 Extracto de tomate Arcor en lata        $    82.50
0006 Jabón en pan Espuma x 400 grs.        $    46.50

Por ej. Necesito modificar el código 0004 porque cambio de precio.-
Parece que la única manera es pasarlo todo a una lista, modificar el precio y volver a escribirlo
todo en el archivo, que tengan un muy buen día.-
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.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Modificar/borrar contenido de un archivo de texto.
« Respuesta #3 en: 10 de Noviembre de 2021, 13:23:43 »
Si, esa es la manera.
O escribir línea a línea desde un archivo origen hacia otro archivo destino modificando lo que se quiera.
Al final el nuevo archivo destino se renombra como el archivo inicial de origen.


Si lo que quieres es manejar bases de datos, entonces necesitas un motor de bases de datos que conecte con Python para manejar la base de datos con el motor desde Python. Pero Python no va a manejar directamente la base de datos relacional.

https://www.fullstackpython.com/databases.html

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Modificar/borrar contenido de un archivo de texto.
« Respuesta #4 en: 10 de Noviembre de 2021, 13:27:19 »
Parece que ahora Python lleva incluído soporte directo para SQLite con import sqlite3.
No lo conozco. Si quieres podemos experimentar con ello, pero no parece sencillo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Modificar/borrar contenido de un archivo de texto.
« Respuesta #5 en: 11 de Noviembre de 2021, 03:17:42 »

Si lo que quieres es manejar bases de datos, entonces necesitas un motor de bases de datos que conecte con Python para manejar la base de datos con el motor desde Python. Pero Python no va a manejar directamente la base de datos relacional.


+1

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Modificar/borrar contenido de un archivo de texto.
« Respuesta #6 en: 11 de Noviembre de 2021, 11:27:41 »
Con este programa creas una base de datos en formato SQLite3 con los productos de la tabla anterior:

Código: Python
  1. import sqlite3
  2.  
  3. print("Test con SQLite")
  4. productos = [
  5.    [1, 'Tomate Arcor lata x 400 grs.', 101.50],
  6.    [2, 'Extracto de tomate Molto', 79.50],
  7.    [3, 'Mayonesa Helmmans DP x 250 grs.', 89.50],
  8.    [4, 'Jabón en polvo Ala x 400 g. común', 79.50],
  9.    [5, 'Extracto de tomate Arcor en lata', 82.50],
  10.    [6, 'Jabón en pan Espuma x 400 grs.', 46.50],
  11. ]
  12. conn = sqlite3.connect("precios.db")
  13. cursor = conn.cursor()
  14.  
  15. cursor.execute(' CREATE TABLE Productos ( Indice int(10), Nombre varchar(80), Precio decimal(10, 2) );')
  16.  
  17. for producto in productos:
  18.    sql = ' INSERT INTO Productos(Indice, Nombre, Precio) VALUES(?,?,?) '
  19.    cursor.execute(sql, producto)
  20.    conn.commit()
  21. conn.close()

Edito: Añado el índice de la tabla.
« Última modificación: 11 de Noviembre de 2021, 11:42:21 por Picuino »

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Modificar/borrar contenido de un archivo de texto.
« Respuesta #7 en: 11 de Noviembre de 2021, 16:27:47 »
Hola ¿Cómo están?
Picuino, con mas gente como vos que empleas tan desinteresadamente tu tiempo para ayudar a otros, el mundo seria distinto.-
Bueno voy a hacer una reseña de lo que me ocurrió luego que di de alta este post, te acordas cuando escribí que x momentos “deliraba”, en parte me refería a crear mi propia bases de datos, desde que programaba en fox para Windows que me intrigan las bases de datos, pero con lo que escribiste me hiciste pausar esa idea y voy a continuar con el lenguaje y mechar un poco con SQLite3.-
Desconozco si puedo aportar algún ej. si encuentro algo interesante lo voy a volcar de inmediato.-
Que pena que no hiciste un post aparte con este tema, seguramente mucha gente se beneficiaria con tus conocimientos.-
Un gran abrazo desde Argentina, slds. Daniel  ☕☕☕
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.-