Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Panic0 en 19 Enero 2021, 16:41 pm



Título: Ayuda con Ficheros
Publicado por: Panic0 en 19 Enero 2021, 16:41 pm
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
Código:
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)



Título: Re: Ayuda con Ficheros
Publicado por: @XSStringManolo en 19 Enero 2021, 17:25 pm
Código
  1. archivo = open("Estudiantes.txt", "r")
  2. print(archivo.read())

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


Título: Re: Ayuda con Ficheros
Publicado por: Panic0 en 19 Enero 2021, 17:59 pm
Código
  1. archivo = open("Estudiantes.txt", "r")
  2. 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


Título: Re: Ayuda con Ficheros
Publicado por: tincopasan en 20 Enero 2021, 00:39 am
una forma de leer cada línea sería:
Código
  1. def leer_archivo():
  2.    with open('estudiantes.txt') as archivo:
  3.        for linea in archivo:
  4.            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.


Título: Re: Ayuda con Ficheros
Publicado por: Danielㅤ 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
  1.    datos = {}
  2.    nombre_apellido = input("Ingrese el nombre y el apellido: ")
  3.    numero = int(input("Ingrese el numero del estudiante: "))
  4.    materia = input("Ingrese la materia: ")
  5.    nota = input("Ingrese la nota: ")
  6.    datos["nombre_apellido"] = nombre_apellido
  7.    datos["numero"] = numero
  8.    datos["materia"] = materia
  9.    datos["nota"] = nota
  10.  


Saludos


Título: Re: Ayuda con Ficheros
Publicado por: Panic0 en 20 Enero 2021, 05:06 am
una forma de leer cada línea sería:
Código
  1. def leer_archivo():
  2.    with open('estudiantes.txt') as archivo:
  3.        for linea in archivo:
  4.            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
Citar
ahora, 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


Título: Re: Ayuda con Ficheros
Publicado por: Panic0 en 20 Enero 2021, 05:07 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
  1.    datos = {}
  2.    nombre_apellido = input("Ingrese el nombre y el apellido: ")
  3.    numero = int(input("Ingrese el numero del estudiante: "))
  4.    materia = input("Ingrese la materia: ")
  5.    nota = input("Ingrese la nota: ")
  6.    datos["nombre_apellido"] = nombre_apellido
  7.    datos["numero"] = numero
  8.    datos["materia"] = materia
  9.    datos["nota"] = nota
  10.  


Saludos

Muchísimas gracias amigo  ;-)


Título: Re: Ayuda con Ficheros
Publicado por: tincopasan en 20 Enero 2021, 05:37 am
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
  1. diccionario={}
  2. def cargar_alumno():
  3.    numero = len(diccionario) + 1 #se genera autoincremental, por lo tanto no se repetirá
  4.    nombre_apellido = input("Ingrese el nombre y el apellido: ")
  5.    materia = input("Ingrese la materia: ")
  6.    nota = input("Ingrese la nota: ")
  7.    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
  8.  
  9. cargar_alumno()
  10.  

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.