Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -23,14 +23,12 @@ def generar_telefono_por_estado(estado):
|
|
23 |
'Queretaro': '442',
|
24 |
'Coahuila': '871'
|
25 |
}
|
26 |
-
lada = ladas.get(estado, '55')
|
27 |
return f"{lada}{random.randint(1000000, 9999999)}"
|
28 |
|
29 |
def generar_datos(cantidad, columnas, progreso):
|
30 |
estados = [
|
31 |
-
'Ciudad de Mexico', 'Jalisco', 'Nuevo Leon', 'Veracruz', 'Yucatan',
|
32 |
-
'Puebla', 'Chiapas', 'Tamaulipas', 'Queretaro', 'Coahuila'
|
33 |
-
]
|
34 |
bancos = ['BBVA', 'Banorte', 'Santander', 'Citibanamex', 'HSBC']
|
35 |
datos = []
|
36 |
|
@@ -65,24 +63,24 @@ def generar_datos(cantidad, columnas, progreso):
|
|
65 |
progreso.progress(1.0)
|
66 |
return pd.DataFrame(datos)
|
67 |
|
68 |
-
def guardar_en_archivos_csv(df, registros_por_archivo, cantidad_archivos):
|
69 |
-
archivos_generados = []
|
70 |
-
for i in range(cantidad_archivos):
|
71 |
-
archivo_nombre = f"datos_parte_{i + 1}.csv"
|
72 |
-
df.to_csv(archivo_nombre, index=False)
|
73 |
-
archivos_generados.append(archivo_nombre)
|
74 |
-
return archivos_generados
|
75 |
-
|
76 |
def comprimir_archivos(archivos, nombre_zip):
|
77 |
with zipfile.ZipFile(nombre_zip, 'w') as zipf:
|
78 |
for archivo in archivos:
|
79 |
zipf.write(archivo, Path(archivo).name)
|
80 |
return nombre_zip
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
def main():
|
83 |
-
st.title("Generador de
|
84 |
-
|
85 |
-
# Checkbox para seleccionar columnas
|
86 |
columnas = []
|
87 |
if st.checkbox("Nombre", value=True):
|
88 |
columnas.append("Nombre")
|
@@ -101,37 +99,31 @@ def main():
|
|
101 |
if st.checkbox("Banco", value=True):
|
102 |
columnas.append("Banco")
|
103 |
|
104 |
-
|
105 |
-
|
106 |
-
cantidad_registros_por_archivo = 1_000_000
|
107 |
|
108 |
-
if
|
109 |
-
st.session_state.archivos_generados = []
|
110 |
-
|
111 |
-
# Bot贸n para generar los datos
|
112 |
-
if st.button("Generar CSV"):
|
113 |
try:
|
114 |
progreso = st.progress(0)
|
115 |
-
st.write(f"Generando {
|
116 |
-
df = generar_datos(
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
st.
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
nombre_zip = "datos_generados.zip"
|
126 |
-
comprimir_archivos(st.session_state.archivos_generados, nombre_zip)
|
127 |
-
with open(nombre_zip, "rb") as file:
|
128 |
st.download_button(
|
129 |
-
"Descargar
|
130 |
data=file,
|
131 |
-
file_name=
|
132 |
-
mime="application/
|
133 |
)
|
|
|
|
|
|
|
134 |
|
135 |
-
# Asegurarse de que Streamlit ejecute el main al inicio
|
136 |
if __name__ == "__main__":
|
137 |
main()
|
|
|
23 |
'Queretaro': '442',
|
24 |
'Coahuila': '871'
|
25 |
}
|
26 |
+
lada = ladas.get(estado, '55')
|
27 |
return f"{lada}{random.randint(1000000, 9999999)}"
|
28 |
|
29 |
def generar_datos(cantidad, columnas, progreso):
|
30 |
estados = [
|
31 |
+
'Ciudad de Mexico', 'Jalisco', 'Nuevo Leon', 'Veracruz', 'Yucatan', 'Puebla', 'Chiapas', 'Tamaulipas', 'Queretaro', 'Coahuila']
|
|
|
|
|
32 |
bancos = ['BBVA', 'Banorte', 'Santander', 'Citibanamex', 'HSBC']
|
33 |
datos = []
|
34 |
|
|
|
63 |
progreso.progress(1.0)
|
64 |
return pd.DataFrame(datos)
|
65 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
def comprimir_archivos(archivos, nombre_zip):
|
67 |
with zipfile.ZipFile(nombre_zip, 'w') as zipf:
|
68 |
for archivo in archivos:
|
69 |
zipf.write(archivo, Path(archivo).name)
|
70 |
return nombre_zip
|
71 |
|
72 |
+
def guardar_en_archivo(df, formato):
|
73 |
+
if formato == "CSV":
|
74 |
+
archivo_nombre = "datos_generados.csv"
|
75 |
+
df.to_csv(archivo_nombre, index=False)
|
76 |
+
elif formato == "XLS":
|
77 |
+
archivo_nombre = "datos_generados.xlsx"
|
78 |
+
df.to_excel(archivo_nombre, index=False, engine='openpyxl')
|
79 |
+
return archivo_nombre
|
80 |
+
|
81 |
def main():
|
82 |
+
st.title("Generador de Datos")
|
83 |
+
|
|
|
84 |
columnas = []
|
85 |
if st.checkbox("Nombre", value=True):
|
86 |
columnas.append("Nombre")
|
|
|
99 |
if st.checkbox("Banco", value=True):
|
100 |
columnas.append("Banco")
|
101 |
|
102 |
+
cantidad_registros = st.number_input("Cantidad de registros a generar:", min_value=1, max_value=1_000_000, value=10_000)
|
103 |
+
formato_descarga = st.radio("Selecciona el formato de descarga:", options=["CSV", "XLS"])
|
|
|
104 |
|
105 |
+
if st.button("Generar Datos"):
|
|
|
|
|
|
|
|
|
106 |
try:
|
107 |
progreso = st.progress(0)
|
108 |
+
st.write(f"Generando {cantidad_registros} registros...")
|
109 |
+
df = generar_datos(cantidad_registros, columnas, progreso)
|
110 |
+
|
111 |
+
# Mostrar previsualizaci贸n
|
112 |
+
st.subheader("Previsualizaci贸n de datos (primeros 100 registros):")
|
113 |
+
st.dataframe(df.head(100))
|
114 |
+
|
115 |
+
archivo_generado = guardar_en_archivo(df, formato_descarga)
|
116 |
+
|
117 |
+
with open(archivo_generado, "rb") as file:
|
|
|
|
|
|
|
118 |
st.download_button(
|
119 |
+
f"Descargar {formato_descarga}",
|
120 |
data=file,
|
121 |
+
file_name=archivo_generado,
|
122 |
+
mime="text/csv" if formato_descarga == "CSV" else "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
123 |
)
|
124 |
+
st.success(f"Archivo {formato_descarga} generado y listo para descargar.")
|
125 |
+
except Exception as e:
|
126 |
+
st.error(f"Error durante la generaci贸n: {e}")
|
127 |
|
|
|
128 |
if __name__ == "__main__":
|
129 |
main()
|