Python - abrir una lista cíclica

Iniciado por SERGIO_@PRENDE, 16 Septiembre 2020, 03:00 AM

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

SERGIO_@PRENDE

Saludos estoy buscando como abrir una lista txt con python, que cada 5 segundos abrar una linea, después de los 5 segundo abra la siguiente linea, cuando llegue a la ultima linea vuelva a la linea 0 y haga la misma opción bucle

Lista
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FIN

tincopasan

bueno ¿y qué has intentado? ¿creas la lista? ¿la lees de un archivo? ¿sabés lo mínimo de python?

Drakaris

#2
Cita de: SERGIO_@PRENDE en 16 Septiembre 2020, 03:00 AM
Saludos estoy buscando como abrir una lista txt con python, que cada 5 segundos abrar una linea, después de los 5 segundo abra la siguiente linea, cuando llegue a la ultima linea vuelva a la linea 0 y haga la misma opción bucle

Lista
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FIN

Primero de nada, por la pregunta que has hecho, debes de aprender fundamentos de programación y python. Te recomiendo videotutoriales (Pildorasinformaticas - Python) o apps moviles como SoloLearn (muy bueno).

Aquí te doy algunas referencias, que tienes que saber:

1. Para abrir un archivo en python, la funcion es open() ejem:
Código (python) [Seleccionar]

   open("/ruta/archivo/lista.txt","r")

en el segundo argumento de la funcion, especificas que quieres que python haga con el archivo especificado en el primer argumento, en este caso es "r" de read.
DOC: https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files

2. En el segundo caso, para hacer que lea cada linea y ejecute en cada itineración algo, tienes que aprender bucles, tipos de bucles, así como variables, etc... Te voy avanzando de que es el bucle "for", te será muy util esta referencia https://www.w3schools.com/python/default.asp

Te avíso que estos tipos de preguntas, no serán muy respondidas.
La idea de los foros como estos (así como foro.elhacker.net,foros.cristalab.com,stackoverflow.com...) es que si tienes alguna duda sobre algo que estas programando, que no entiendas,etc. Esa es la finalidad. Se autodidacta, no esperes que las cosas de vengan. Persiguelas tú.

Ahora si preguntas, "quieres ser desarrollador movil que tengo que estudiar, que lenguajes?" estos tipos de preguntas, tendrás muchas respuestas.

En el caso de
Citar
que cada 5 segundos abrar una line

con el modulo time se puede:
Código (python) [Seleccionar]

import time
time.sleep(5)


No te desanimes, y que no te de pereza, que al querer hacerlo tan rapido, puede que no lo consigas.

Mucho animo y suerte!! :)
Lo increible, no es lo que ves, sino como es

SERGIO_@PRENDE

Gracias voy aprendiendo hasta ahora he logrado saber cuantas líneas tiene un txt, sabiendo el numero total ahora abrir línea por línea que es en lo que estoy estancado.




import time

fichero = open('1.txt', 'r')
n = len(fichero.readlines())
print (n)
fichero.close()


with open('1.txt') as f:
data = f.readlines()[n]
print(data)



while n >  0:
    print(n)
    n = n - 1
    time.sleep(0.100)
print('FIN DE LISTA')

Drakaris

Buenas! Para imprimir linea por linea el contenido de un archivos, se puede hacer de dos metodos:

  • con un bucle for
Código (python) [Seleccionar]

fichero = open("myfile.txt"."r")
for line in fichero.readlines():
     print(line.replace("\n",""))

la funcion replace() remplaza los espacios en blanco (\n) por un cadena vacia (es decir los elimina). Lo hago porque en la salida entre linea y linea este imprime un salto.

  • con la palabra with
Código (python) [Seleccionar]

with open("myfile.txt","r") as line:
   print(line)

Lo increible, no es lo que ves, sino como es

SERGIO_@PRENDE

Gracias por su tiempo, en la representación de navegación de la líneas que contiene el txt hago un conteo en representación con "n" por decir si cae el numero 10, deseo leer la linea 10, determinar

WHK

recomiendo utilizar readline() en ves de readlines() porque si el archivo tiene un millon de lineas las enviará directo a la memoria en un array y se sobrecargará la memoria o el interpretador arrojará una excepción, es mejor que el puntero quede abierto mientras itera el texto y si necesita desbloquear el archivo entonces que haga una copia y haga unshift linea por linea, que extraiga y elimine.

Saludos.

Drakaris

file: myfile.txt

zero
one
two
three
four
five
six
seven
eight
nine
ten


Código (python) [Seleccionar]

file = open("myfile.txt")
n = [4]
for i, line in enumerate(file):
     if i in n:
       print(line)  # four


En el condicional if listamos todos los elementos de la lista en la variable n, ya que la variable n contiene una lista. Si quisieras imprimir varias lineas del archivos, sería:

Código (python) [Seleccionar]

file = open("myfile.txt")
n = [4,7]
for i, line in enumerate(file):
     if i in n:
       print(line)  # four
                        # seven
Lo increible, no es lo que ves, sino como es

SERGIO_@PRENDE

Saludos si me sirve para la lectura , trato de enlazarlo, no lo logro mi txt tiene 6 líneas, las líneas van así:

1128
22123
31232
434546
557668
6456


el code reconoce las 6 líneas del archivo y hace una cuenta regresiva del 6 al 1



Si le agrego mas líneas reconoce las líneas y crea una cuenta regresiva, en la cuenta regresiva el numero de regresión debe abrir el numero, si toca el conteo en el 6 deseo leer la línea 6, después seguir la regresión, leer la línea 5 y así sucesivamente, ahí no consigo la lectura de la líneas, el poder adjuntar su ejemplo a el contador de líneas y regresión

Drakaris

Yo lo que haría sería en dos pasos:

1º obtienes el max de lineas del archivo y con el bucle while lo almacenas en una lista, con la funcion append(). Ten en cuanta que el while debe ser >= 0, no, max > 0: Sí le dices max > 0: no leerá la linea 0 y no te imprimira la primera linea.

2º añadira el codigo que te inserte anteriormente, pero la variable n seria la lista generada por el while.
Lo increible, no es lo que ves, sino como es