Python - Duda Archivos

 
Vista:

Duda Archivos

Publicado por Andres (6 intervenciones) el 10/07/2021 00:28:51
Hola tengo una duda necesito crear una función en donde me devuelva una lista, en donde debo abrir un archivo y leer la información que contiene, que es el siguiente formato;

La primera línea es un número entero N, correspondiente al número de baldosas que serán creadas.
En las líneas que siguen, recibirás la información de las N baldosas. Para cada una de ellas, la primera línea será un segundo número entero M, indicando el número de caminos pertenecientes a esa baldosa.
La información de cada camino será entregada en una sola línea, separada por espacios:

al intentar abrirlo y leerlo me sale esto <_io.TextIOWrapper name='baldosas.txt' mode='r' encoding='UTF-8'>

como podria solucionarlo?

1
2
3
4
5
6
7
8
9
10
11
12
13
def generar_mazo():
 
    archivo = open("baldosas.txt", "r")
 
    lines = []
 
    for line in archivo:
 
        lines.append(line)
 
    archivo.close()
 
    print(archivo)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda Archivos

Publicado por tincopasan (1082 intervenciones) el 10/07/2021 01:09:39
Estas tratando de mostrar el archivo, se supone que guardaste los datos en lines, así que cambia:
1
print(archivo)
por
1
print(lines)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda Archivos

Publicado por Andres (6 intervenciones) el 10/07/2021 02:14:22
Hola siii toda la razón, ahora tengo otra duda, al hacer esto;

1
2
3
4
5
archivo = open("baldosas.txt", "r")
 
    lista = [linea.rstrip("\n") for linea in archivo]
 
    print(lista)

tengo este output: ['2', '3', 'F O azul', 'E S rojo', 'F N azul', '2', 'O S azul', 'E N azul']


pero me gustaría que quedara una lista de lista así ['2', '3', (["F", "O"], "azul"), (["E", "S"], "rojo"), (["F", "N"], "azul"], '2', (["O", "S"], "azul"), (["E", "N"], "azul")]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Duda Archivos

Publicado por tincopasan (1082 intervenciones) el 10/07/2021 03:00:07
partamos de la base que veo corchetes "[" y paréntesis "(" de forma poco clara , deberías definir más concretamente si queres tuplas o listas y que elementos van en cada lista.por ejemplo: [['2', '3'],[ 'F O azul'],etc] y lo más probable depende los condicionales se tendrá que hacer sin comprensión de listas., que dicho sea de paso me parece muy innecesario en este caso, para eso es mejor:

1
2
with open("baldosas.txt") as archivo:
    lista = archivo.read().splitlines()

donde con with solo se instancia a archivo.close() así que no se necesita y si te fijas no uso el modo "r" en la lectura, ya que es la forma predefinida por defecto y es una redundancia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar