Autor
|
Tema: Bases de datos utilizando archivo .txt en Python. (Leído 3,849 veces)
|
El mas antiguo
Desconectado
Mensajes: 103
|
Estoy tratando de realizar mi gran sueño que es crear mis propias BD y para ello necesito alguna ayudita(descarto que alguien me diga «para que reinventar la rueda» gente sueños son sueños).- La ayuda es ¿de dónde puedo bajar un archivo con más de 100.000 registros y un ancho de por lo menos unas 40 caracteres, cada uno? Para hacerme enter mejor, lo que quiero medir (en tiempo) cuanto tarda en mostrar un registro(por ej. el 100.000) ordenado y cuanto tarda sin ordenar (esto desde una lista, por supuesto).- Bueno es todo y desde ya muchas gracias por el tiempo que le dediquen.-
Slds. Daniel ☕☕☕
|
|
|
En línea
|
|
|
|
Danielㅤ
Conectado
Mensajes: 1.837
🔵🔵🔵🔵🔵🔵🔵
|
Hola, desde mi punto de vista es buena idea que utilices archivos txt como bases de datos.
En cuanto al tiempo que puede tardar en mostrar un registro tomando tu ejemplo de 100 mil líneas/registros, tardaría menos de 1 segundo, apenas milésimas de segundos, de hecho python puede procesar millones de registros en apenas segundos.
Ahora para lograr ese archivo que vos necesitas para medir el tiempo, yo lo crearia con un simple código en python.
Saludos
|
|
|
En línea
|
|
|
|
El mas antiguo
Desconectado
Mensajes: 103
|
Hola tocayo, debo deducir que me adivinaste el pensamiento casi me respondes antes que diera de alta el post, jajajaja gracias, gracias.- Que me sugerís para crear el archivo, ¿un bucle repitiendo todas las líneas/registros y ponerle un código en aumento? Ej.: 1,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 2,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 3,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 4,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 5,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. [...] 110000,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. import time inicio = time.time() lista = [] for x in range(1,1000000): final = f"{x}, Yo vivo en este mundo pero no pertenezco a las leyes de este mundo" lista.append(final) fin = time.time() print(fin-inicio) # 0.2197284698486328
Slds. Daniel ☕☕☕
|
|
« Última modificación: 13 Noviembre 2022, 22:12 pm por El mas antiguo »
|
En línea
|
|
|
|
reymosquito
Desconectado
Mensajes: 81
|
hola: hay varias cosas: 1) se puede mejorar la velocidad de la creación de listas con listas por comprensión 2)el segundo valor de range no es incluido, así que debes sumarle uno más si querés 100.000 3)cuando se usan varios enteros es un poco díficil la lectura por lo cual se puede usar "_" 4)para escribir el archivo no es necesario un bucle. Ejemplo de lo que digo: import time inicio = time.time() otra=[f"{x}, Yo vivo en este mundo pero no pertenezco a las leyes de este mundo" for x in range(1,100_001)] fin = time.time() print(fin-inicio) #comparalo con el tiempo de la otra forma, ésta debería ser más rápida. with open("registro.txt","a") as archivo: archivo.write('\n'.join(otra))
y listo un archivo con 100.000 líneas
|
|
|
En línea
|
|
|
|
El mas antiguo
Desconectado
Mensajes: 103
|
Hola rey, ¿cómo estás?, gracias por tu tiempo y el código, te cuento, estoy como al principio, lo que necesito es tener el archivo «desordenado» y medir el tiempo de búsqueda de un registro por el código y luego la misma lista, pero ordenada y medir nuevamente el tiempo que tarda el programa en encontrar el mismo registro.- Estuve practicando con esto, pero claro, el orden no lo hace como lo deseado: 6,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 5,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 4,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 3,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 2,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. [...] 1,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. Yo inocentemente esperaba esto: 1,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 2,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 3,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 4,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. 5,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. [...] 100000,Yo vivo en este mundo, pero no pertenezco a las leyes de este mundo. Pero como es lógico apareció algo distinto, es obvio que toma los números como string y no como enteros: Voy a seguir practicando, estoy muy entusiasmado, cuando termine con esto me faltan 2 cosas muy necesarias que luego se las comento.- Slds. Daniel ☕☕☕
|
|
|
En línea
|
|
|
|
El mas antiguo
Desconectado
Mensajes: 103
|
Bueno, al fin la búsqueda/práctica dio sus frutos. Con esta línea creo un archivo con 100.001 registros en forma descendente: otra=[f"{x}, Yo vivo en este mundo pero no pertenezco a las leyes de este mundo" for x in range(100_001,0,-1)]
100001, Yo vivo en este mundo pero no pertenezco a las leyes de este mundo 100000, Yo vivo en este mundo pero no pertenezco a las leyes de este mundo 99999, Yo vivo en este mundo pero no pertenezco a las leyes de este mundo 99998, Yo vivo en este mundo pero no pertenezco a las leyes de este mundo [...] 1, Yo vivo en este mundo pero no pertenezco a las leyes de este mundo
Con esta lo ordeno en forma ascendente: lista = sorted(tmpLista, key=lambda x: int(x[0]))
Me falta tan solo medir los tiempos de búsqueda con la lista ordenada y sin ordenar, y otras 2 cosas que luego les comento… Slds. Daniel ☕☕☕
|
|
« Última modificación: 15 Noviembre 2022, 01:06 am por El mas antiguo »
|
En línea
|
|
|
|
Danielㅤ
Conectado
Mensajes: 1.837
🔵🔵🔵🔵🔵🔵🔵
|
Hola, también podes usar el método reverse() con una lista para revertir su contenido: archivo = open("archivo.txt", "r").read().splitlines().reverse() archivo2 = open("archivo2.txt", "w") archivo2 = archivo2.write(archivo.join("\n")) archivo2.close()
Pruébalo y nos comentas. Saludos
|
|
|
En línea
|
|
|
|
El mas antiguo
Desconectado
Mensajes: 103
|
Hola Dani, gracias por el código, está muy bueno, pero no necesito crear 2 archivos.- A continuación muestro mi código y verás que lo hago a partir de una lista, natural (tal cual está en el archivo) y luego ordenada y me lleve una sorpresa, sin ordenar es lo mismo que ordenada.- import time import codecs lista = [] with codecs.open('registro.txt', 'r', encoding='utf-8') as archivo: for tmp_linea in archivo: tmp_linea.replace("\r,\n"," ") linea = tmp_linea.split(',') lista.append(linea) lista = sorted(lista, key=lambda x: int(x[0])) # Ordenar la lista inicio = time.time() for lis in lista: if int(lis[0]) == 100000: # Si la lista esta al natural, el 100000 se reemplaza break # con un 10 fin = time.time() print(fin-inicio) ## Lista sin ordenar = 0.014191389083862305 ## Lista ordenada = 0.015621662139892578
Al fin esta última es la manera más rápida... import time import codecs inicio = time.time() with codecs.open('registro.txt', 'r', encoding='utf-8') as archivo: for tmp_linea in archivo: tmp_linea.replace("\r,\n"," ") linea = tmp_linea.split(',') if linea[0] == '10': break fin = time.time() print(fin-inicio) ''' Con la lista sin ordenar = 0.2968323230743408 Con la lista ordenada = 0.3124265670776367 Sacado directo del archivo = 0.26558613777160645 '''
Continuo con el resto.- Slds. Daniel ☕☕☕
|
|
« Última modificación: 14 Noviembre 2022, 21:23 pm por El mas antiguo »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[Python]y[Google App Engine] problema con las bases de datos
Scripting
|
kerith
|
6
|
4,381
|
30 Diciembre 2010, 02:21 am
por kerith
|
|
|
Ejercicio bases de datos mysql, manipulación de datos.
Bases de Datos
|
KaRaLLo
|
0
|
12,913
|
14 Mayo 2012, 21:27 pm
por KaRaLLo
|
|
|
[Proyecto]PyDB - "Bases de Datos" fáciles en Python :: JaAViEr | 0x5d
Scripting
|
0x5d
|
0
|
2,023
|
23 Julio 2013, 14:35 pm
por 0x5d
|
|
|
Problema al pasar datos entre formularios bases de datos distintas
Programación General
|
soyconta
|
0
|
2,725
|
5 Junio 2020, 19:22 pm
por soyconta
|
|
|
pasar datos de un archivo csv a otro con python
Programación General
|
colcrt
|
2
|
4,261
|
27 Enero 2021, 05:56 am
por colcrt
|
|