Ayuda con Ficheros

Iniciado por Panic0, 19 Enero 2021, 16:41 PM

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

Panic0

Hola a todos,saben como puedo ver la Información de un fichero? me mandaron a hacer un menú en el que se tenga que agregar alumnos (nombre,apellido,numero materia y nota) y esta se guarde en un archivo. Esa parte ya la hice,pero lo que no me da resultados es lo de poder ver la Información.
La idea es que una de las opciones del menú sean consultar por grupo,consultar numero y agregar números.Si me pueden dar una mano seria excelente !

Lo que tengo de momento

archivo = open("Estudiantes.txt","a")

def Agregar_alumnos(archivo):
   
    nombre_apellido = []
    numero = []
    materia = []
    nota = []
       
    nombre_apellido.append(input("Ingrese el nombre y el apellido: "))
    numero.append(int(input("Ingrese el numero del estudiante: ")))
    materia.append(input("Ingrese la materia: "))
    nota.append(input("Ingrese la nota: "))

    nombre_apellido = str(nombre_apellido)
    numero = str(numero)
    materia = str(materia)
    nota = str(nota)

    archivo.write("\n")
    archivo.write(nombre_apellido)
    archivo.write(numero)
    archivo.write(materia)
    archivo.write(nota)

    nombre_apellido = list(nombre_apellido)
    numero = list(numero)
    materia = list(materia)
    nota = list(nota)

   
    archivo.close()

if __name__ == "__main__":
    Agregar_alumnos(archivo)

Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

@XSStringManolo

Código (python) [Seleccionar]
archivo = open("Estudiantes.txt", "r")
print(archivo.read())


Usa geshi para colorear el código:
[code=python]archivo = open("Estudiantes.txt", "r")
print(archivo.read())[/code]

Panic0

Cita de: @XSStringManolo en 19 Enero 2021, 17:25 PM
Código (python) [Seleccionar]
archivo = open("Estudiantes.txt", "r")
print(archivo.read())


Usa geshi para colorear el código:
[code=python]archivo = open("Estudiantes.txt", "r")
print(archivo.read())[/code]


Hola,ya probé hacer eso y no me funcionó jejej
De todas formas muchas gracias
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

tincopasan

una forma de leer cada línea sería:
Código (python) [Seleccionar]
def leer_archivo():
    with open('estudiantes.txt') as archivo:
        for linea in archivo:
            print(linea)


ahora, en lo pèrsonal creo que tenés muchas cosas de más y tampoco entiendo porque guaradar los datos como listas.

Danielㅤ

#4
Hola, podes usar diccionarios para lo que deseas hacer, con uno solo sería suficiente.

Aquí te dejo un ejemplo de cómo usar un diccionario:

Código (Python) [Seleccionar]

    datos = {}
    nombre_apellido = input("Ingrese el nombre y el apellido: ")
    numero = int(input("Ingrese el numero del estudiante: "))
    materia = input("Ingrese la materia: ")
    nota = input("Ingrese la nota: ")
    datos["nombre_apellido"] = nombre_apellido
    datos["numero"] = numero
    datos["materia"] = materia
    datos["nota"] = nota



Saludos
¡Regresando como cual Fenix! ~
Bomber Code © 2021 https://www.bombercode.net/foro/

Ayudas - Aportes - Tutoriales - Y mucho mas!!!

Panic0

Cita de: tincopasan en 20 Enero 2021, 00:39 AM
una forma de leer cada línea sería:
Código (python) [Seleccionar]
def leer_archivo():
    with open('estudiantes.txt') as archivo:
        for linea in archivo:
            print(linea)


ahora, en lo pèrsonal creo que tenés muchas cosas de más y tampoco entiendo porque guaradar los datos como listas.

Bien,lo voy a probar muchas gracias
En cuanto a esto
Citarahora, en lo pèrsonal creo que tenés muchas cosas de más y tampoco entiendo porque guaradar los datos como listas.

Me podrías decir que es lo que esta de más?
Y con lo de las listas,mi idea era ponerlas en un diccionario  ;D
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

Panic0

Cita de: [D]aniel en 20 Enero 2021, 01:50 AM
Hola, podes usar diccionarios para lo que deseas hacer, con uno solo sería suficiente.

Aquí te dejo un ejemplo de cómo usar un diccionario:

Código (Python) [Seleccionar]

    datos = {}
    nombre_apellido = input("Ingrese el nombre y el apellido: ")
    numero = int(input("Ingrese el numero del estudiante: "))
    materia = input("Ingrese la materia: ")
    nota = input("Ingrese la nota: ")
    datos["nombre_apellido"] = nombre_apellido
    datos["numero"] = numero
    datos["materia"] = materia
    datos["nota"] = nota



Saludos

Muchísimas gracias amigo  ;-)
Los ataques de pánico suelen comenzar de forma súbita, sin advertencia.

tincopasan

vaya, varias cosas:
Citar
datos = {}
    nombre_apellido = input("Ingrese el nombre y el apellido: ")
    numero = int(input("Ingrese el numero del estudiante: "))
    materia = input("Ingrese la materia: ")
    nota = input("Ingrese la nota: ")
    datos["nombre_apellido"] = nombre_apellido
    datos["numero"] = numero
    datos["materia"] = materia
    datos["nota"] = nota

no tiene sentido usar los datos de esa forma, está generando claves por cada item, lo cual generará problemas si los valores se repiten en otros alumnos. Lo ideal es generar una clave única, que puede ser el número de alumno y como valores los datos:

Código (python) [Seleccionar]
diccionario={}
def cargar_alumno():
    numero = len(diccionario) + 1 #se genera autoincremental, por lo tanto no se repetirá
    nombre_apellido = input("Ingrese el nombre y el apellido: ")
    materia = input("Ingrese la materia: ")
    nota = input("Ingrese la nota: ")
    diccionario[numero]=[nombre_apellido,materia,nota] #al estar todos en una lista después es muy simple ver los datos completos de cada alumno, aunque haya datos iguales, los números, osea las claves son únicas

cargar_alumno()


por otro lado, al diccionario como tal no lo podés guardar en un archivo, lo cual genera que cada vez que inicies el script el diccionario estará vacío.
tu planteo inicial y esta solución están muy incompletas, ahora si es solo para cada ejecución con el diccionario bien estructurado sobra.