| 
	
		|  Autor | Tema: Error al querer leer el último registro en archivo .txt [python]   (Leído 10,106 veces) |  
	| 
			| 
					
						| DanielPy 
								
								 Desconectado 
								Mensajes: 145
								
								   | 
 
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: def establecer_codigo():    archivo = abrir_lectura()    tmp = archivo.readlines()[-1]    tmp = tmp.split()    codigo = int(tmp[0])    archivo.close()     return codigo
 Saludos. Daniel
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amory cuando lo abrazas dejan de causar dolor.-
 |  |  |  | 
			| 
					
						| engel lex | 
 
No entiendo lo que quieres hacer, pero lo ideal sería leer lineas de atrás hacia adelante for linea in archivo.readlines()archivo.readlines()[-::1]: # lee El Array desde el finaltmp = 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
 
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| DanielPy 
								
								 Desconectado 
								Mensajes: 145
								
								   | 
 
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: 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. - |  
						| 
								|  |  
								|  |  En línea | 
 
 abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amory cuando lo abrazas dejan de causar dolor.-
 |  |  |  | 
			| 
					
						| engel lex | 
 
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) |  
						| 
								|  |  
								|  |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| DanielPy 
								
								 Desconectado 
								Mensajes: 145
								
								   | 
 
Perdón por la ignorancia pero me da un error de sintaxis, me podrías decir en que estoy pifiando. - def establecer_codigo():	archivo = abrir_lectura()	for linea in archivo.readlines()archivo.readlines()[-::1]: # lee El Array desde el final		tmp = linea.strip()		if not tmp: # si la línea quedó en blanco			continue # ir al siguiente valor del for 	codigo = int(tmp[0])	archivo.close()	return codigo
 |  
						| 
								|  |  
								|  |  En línea | 
 
 abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amory cuando lo abrazas dejan de causar dolor.-
 |  |  |  | 
			| 
					
						| engel lex | 
 
exactamente que error te da?
 |  
						| 
								|  |  
								|  |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| DanielPy 
								
								 Desconectado 
								Mensajes: 145
								
								   | 
 |  
						| 
								|  |  
								| « Última modificación: 27 Marzo 2018, 14:37 pm por DanielPy » |  En línea | 
 
 abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amory cuando lo abrazas dejan de causar dolor.-
 |  |  |  | 
			| 
					
						| engel lex | 
 
estoy desde el cel, no vi este error (que deberías haverlo visto al marcartelo el python XD) for linea in archivo.readlines()archivo.readlines()[-::1]:archivo.readlines() está 2 veces seguidas for linea in archivo.readlines()[-::1]: |  
						| 
								|  |  
								|  |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  | 
			| 
					
						| DanielPy 
								
								 Desconectado 
								Mensajes: 145
								
								   | 
 |  
						| 
								|  |  
								| « Última modificación: 27 Marzo 2018, 14:36 pm por DanielPy » |  En línea | 
 
 abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amory cuando lo abrazas dejan de causar dolor.-
 |  |  |  | 
			| 
					
						| engel lex | 
 
no veo el error 
 para qué compilas? por qué no simplemente ejecutas?
 |  
						| 
								|  |  
								|  |  En línea | 
 
 El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Archivo binario, al leerlo me muestra 2 veces el ultimo registro Programación C/C++
 | .:BlackCoder:. | 6 | 8,766 |  13 Marzo 2011, 05:58 am por .:BlackCoder:.
 |  
						|   |   | leer archivo con python Scripting
 | poeta3d | 1 | 3,853 |  18 Diciembre 2011, 04:53 am por 0x5d
 |  
						|   |   | [Python] Error leer archivo Python
 | Arnau27 | 4 | 6,308 |  1 Mayo 2012, 11:39 am por 0x5d
 |  
						|   |   | Leer registro encabezado de archivo | C Programación C/C++
 | milx86 | 4 | 5,026 |  22 Octubre 2014, 19:29 pm por avesudra
 |  
						|   |   | [Ayuda]Problema al querer leer JSON hecho PHP desde Java Java
 | PabloPbl | 3 | 4,515 |  19 Octubre 2018, 03:32 am por WHK
 |    |