Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: DanielPy en 25 Marzo 2018, 23:42 pm



Título: Error al querer leer el último registro en archivo .txt [python]
Publicado por: DanielPy en 25 Marzo 2018, 23:42 pm
Hola, ¿cómo están?
Créame que lo intente de muchas maneras y no encuentro enmendar el error. -
Tengo un archivo de texto que contiene lo siguiente:
1  123
2  345
3  567
4  789
Tengo que establecer el próximo código que sí o si tiene que ser 5, no puedo contar las líneas porque
el programa tiene la posibilidad de borrar una línea:
1  123
2  345
4  789
Si cuento las lineas el código seria 3+1=4 y el 4 estaría repetido cosa que no puede ocurrir porque lo
utilizo para la búsqueda. -
Lo que ocurre es que si tengo más de una línea el programa funciona correctamente, pero si tengo un
Solo registro me da error, tmp aparece vacío. -

Esta es la función:
Código
  1. def establecer_codigo():
  2.    archivo = abrir_lectura()
  3.    tmp = archivo.readlines()[-1]
  4.    tmp = tmp.split()
  5.    codigo = int(tmp[0])
  6.    archivo.close()
  7.  
  8.    return codigo

Saludos.
Daniel


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: engel lex en 26 Marzo 2018, 00:53 am
No entiendo lo que quieres hacer, pero lo ideal sería leer lineas de atrás hacia adelante

Código:
for linea in archivo.readlines()archivo.readlines()[-::1]: # lee El Array desde el final
  tmp = linea.strip()
  if not temp: # si la línea quedó en blanco
    continue # ir al siguiente valor del for

  #aqui tienesla Ultima línea no en blanco
   


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: DanielPy en 26 Marzo 2018, 01:11 am
Hola, Angel lex, gracias por ocuparte.
Como te puedo explicar para que lo entiendas, lo voy a intentar:
Tengo que generar un código nuevo cada vez que se intenta ingresar un nuevo registro, el caso es que si el archivo tiene un solo registro me da error y si tiene 2 o más todo bien. -

El error:
Citar
raceback (most recent call last):
 File "basesDatos.py", line 138, in <module>
   menu_uno()
 File "basesDatos.py", line 29, in menu_uno
   agregar()
 File "basesDatos.py", line 65, in agregar
   codigo = establecer_codigo()
 File "basesDatos.py", line 108, in establecer_codigo
   codigo = int(tmp[0])
IndexError: list index out of range
Por ello aclaraba que si hay un solo registro tmp aparece vacío. -


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: engel lex en 26 Marzo 2018, 01:22 am
con el mismo codigo que te di, solo less el ultimo numero y agregas 1, no importa que se borran numeros intermedios, siempre tendrás el ultimo posible (tipo mysql autoincrement pero más rustico)


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: DanielPy en 26 Marzo 2018, 02:16 am
Perdón por la ignorancia pero me da un error de sintaxis, me podrías decir en que estoy pifiando. -

Código
  1. def establecer_codigo():
  2. archivo = abrir_lectura()
  3. for linea in archivo.readlines()archivo.readlines()[-::1]: # lee El Array desde el final
  4. tmp = linea.strip()
  5. if not tmp: # si la línea quedó en blanco
  6. continue # ir al siguiente valor del for
  7.  
  8. codigo = int(tmp[0])
  9. archivo.close()
  10. return codigo


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: engel lex en 26 Marzo 2018, 02:37 am
exactamente que error te da?


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: DanielPy en 26 Marzo 2018, 02:41 am
 :huh:


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: engel lex en 26 Marzo 2018, 02:50 am
estoy desde el cel, no vi este error (que deberías haverlo visto al marcartelo el python XD)

Código:
for linea in archivo.readlines()archivo.readlines()[-::1]:

archivo.readlines() está 2 veces seguidas

Código:
for linea in archivo.readlines()[-::1]:


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: DanielPy en 26 Marzo 2018, 03:07 am
 :huh:


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: engel lex en 26 Marzo 2018, 03:43 am
no veo el error

para qué compilas? por qué no simplemente ejecutas?


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: DanielPy en 26 Marzo 2018, 03:53 am
 :huh:


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: engel lex en 26 Marzo 2018, 04:21 am
lo digo porque veo

Citar
python -m py_compile "basesDatos.py"

usualmente solo requieres python script_name.py


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: DanielPy en 26 Marzo 2018, 04:36 am
 :huh:


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: engel lex en 26 Marzo 2018, 20:52 pm
tu problema es buscarlo estaticamente... si al final del archivo agregas o  quitas los saltos de linea, fallará


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: DanielPy en 26 Marzo 2018, 22:20 pm
Por favor, a algún moderador le pido que restablezca lo que borre, no vale la pena que por estos dos ¿? alguien se prive de lo que estaba escrito(tal vez le sirva a alguien), me basta con borrar mi cuenta.

Saludos.
Daniel


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: tincopasan en 27 Marzo 2018, 05:10 am
1)
Citar
digo por si el archivo contara con 500.000 registros. -
es grotesco lo que queres hacer, en tu lugar comenzaría por lo menos a leer sobre base de datos.
2)
Citar
Argentino, acomodalo voz ya no se ni donde poner el post...
no sé de donde sale esto pero ese voz está muy mal, "voz" es del sonido que se produce al hablar, "vos" es lo que usamos para referirnos al otro al que hablamos.Ej: vos escribís muy mal


Título: Re: Error al querer leer el último registro en archivo .txt [python]
Publicado por: Avispon99 en 31 Marzo 2018, 08:38 am
Bueno pss de alguna forma abriste el archivo sin el 'open("archivo.txt", "r")' y eso ya te hace un experto en magia negra :v