2018_IIT Semana10 – Archivos Entrada/Salida

1. Lecturas

8.1 Guardar archivo Ejemplo

8.2 Abrir archivo Ejemplo


2. Ejercicios en clase

2.1. Biciespol. Guardar y Abrir tabla de archivos

http://blog.espol.edu.ec/ccpg1001/2eva_iit2015_t4-biciespol-prestamos-de-bicicletas/

2.2 Menú de consejerías académicas
http://blog.espol.edu.ec/ccpg1001/3eva_it2013_t3-menu-de-consejerias-academicas/

http://blog.espol.edu.ec/ccpg1001/3eva_it2013_t2-sorteo-de-consejeros-para-estudiantes/

2.3 Informes notas de estudiantes
http://blog.espol.edu.ec/ccpg1001/3eva_iiit2003_t4-informes-notas-de-estudiantes/

2.4 Inscripción universitaria SNNA

http://blog.espol.edu.ec/ccpg1001/2eva_iit2011_t4-inscripcion-universitaria-snna/


3. Desarrollo en clases. NO INCLUYE la parte asignada como tarea para subir al sidweb

3.1 Biciespol

http://blog.espol.edu.ec/ccpg1001/2eva_iit2015_t4-biciespol-prestamos-de-bicicletas/

http://blog.espol.edu.ec/ccpg1001/s2eva_iit2015_t4-biciespol-prestamos-de-bicicletas/

3.2 Menú de consejerías académicas

http://blog.espol.edu.ec/ccpg1001/3eva_it2013_t3-menu-de-consejerias-academicas/

http://blog.espol.edu.ec/ccpg1001/s3eva_it2013_t3-menu-de-consejerias-academicas/

# 3Eva_IT2013_T3 Menú de consejerías

# 3Eva_IT2013_T2 sorteo de consejeros
import numpy as np
import random as rnd

def sorteoconsejeros(n,m):
    asigna = np.zeros(shape=(n,2),dtype=int)
    i = 0
    while not(i>=n):
        asigna[i,0] = i
        asigna[i,1] = int(rnd.random()*m)+0
        i = i+1
    return(asigna)


estudiante = []
consejero = []
opcion = '0'
while not(opcion == '8'):
    print('Menú')
    print('1. Ingresar datos de estudiante')
    print('2. Ingresar datos de consejero')
    print('3. Sorteo de consejeros/estudiantes')
    print('4. Mostrar lista de estudiantes por consejero')
    print('5. Mostrar consejero de un estudiante')
    print('6. Abrir Archivo estudiante y consejero')
    print('7. Guardar Archivo estudiante y consejero')
    print('8. Salir')

    opcion  = input('opcion: ')

    if opcion=='1':
        print('  -- 1. Ingresar datos de estudiante')
        mat = input('matricula: ')
        nom = input('nombre: ')
        ema = input('email:  ')
        registro = {'matricula': mat,'nombre':nom, 'email': ema}
        estudiante.append(registro)

    if opcion=='2':
        print('  -- 2. Ingresar datos de consejero')
        ced = input('cedula: ')
        nom = input('nombre: ')
        ema = input('email:  ')
        registro = {'cedula': ced,'nombre':nom, 'email': ema}
        consejero.append(registro)

    if opcion == '3':
        print('3. Sorteo de consejeros/estudiantes')
        n = len(estudiante)
        m = len(consejero)
        asigna = sorteoconsejeros(n,m)
        print(asigna)

    if opcion == '4':
        print('  -- 4. Mostrar lista de estudiantes por consejero')
        ced = input(' cedula: ')
        # Busca indice de consejero por cedula
        m = len(consejero)
        cual =-1
        j = 0
        while not(j>=m):
            if (consejero[j]['cedula']==ced):
                cual = j
            j = j+1
        # Busca estudiantes asignados a ese consejero
        n = len(estudiante)
        i = 0
        while not(i>=n):
            if (asigna[i][1]==cual):
                fila = asigna[i][0]
                columna = 'nombre'
                print(estudiante[fila][columna])
            i = i+1
    if opcion=='6':
        print('  -- 6. Abrir Archivo estudiante y consejero')
        narchivo = input('nombre del archivo estudiantes: ')
        narchivoc = input('nombre del archivo consejero: ')
        narchivo = narchivo + '.txt'
        narchivoc = narchivoc  + '.txt'
        # estudiantes
        archivo = open(narchivo,'r')

        estudiante = []
        linea = archivo.readline()
        while not(linea ==''):
            linea = linea.strip('\n')
            partes = linea.split(',')
            mat = partes[0]
            nom = partes[1]
            ema = partes[2]
            registro = {'matricula': mat,'nombre':nom, 'email': ema}
            estudiante.append(registro)
            linea = archivo.readline()
        archivo.close()

        # lo mismo que estudiante, pero con consejero
        archivo = open(narchivoc,'r')

        consejero = []
        linea = archivo.readline()
        while not(linea ==''):
            linea = linea.strip('\n')
            partes = linea.split(',')
            ced = partes[0]
            nom = partes[1]
            ema = partes[2]
            registro = {'cedula': ced,'nombre':nom, 'email': ema}
            consejero.append(registro)
            linea = archivo.readline()
        archivo.close()


    if opcion =='7':
        print('  -- 7. Guardar Archivo estudiante y consejero')
        narchivo = input('nombre del archivo estudiantes: ')
        narchivoc = input('nombre del archivo consejero: ')
        narchivo = narchivo + '.txt'
        narchivoc = narchivoc  + '.txt'
        
        n = len(estudiante)
        archivo = open(narchivo,'w')
        fila = 0
        while not(fila>=n):
            mat = estudiante[fila]['matricula']
            nom = estudiante[fila]['nombre']
            ema = estudiante[fila]['email']
            linea = mat+','+nom+','+ema+'\n'
            archivo.write(linea)
            fila = fila +1
        archivo.close()

        # lo mismo que estudiantes para consejero
        m = len(consejero)
        archivo = open(narchivoc,'w')
        fila = 0
        while not(fila>=m):
            ced = consejero[fila]['cedula']
            nom = consejero[fila]['nombre']
            ema = consejero[fila]['email']
            linea = ced+','+nom+','+ema+'\n'
            archivo.write(linea)
            fila = fila +1
        archivo.close()
        
    if opcion =='8':
        print('   -- Gracias, @espol.edu.ec')

3.3 Informes notas de estudiantes

http://blog.espol.edu.ec/ccpg1001/3eva_iiit2003_t4-informes-notas-de-estudiantes/

http://blog.espol.edu.ec/ccpg1001/s3eva_iiit2003_t4-informes-notas-de-estudiantes/

2.4 Inscripción universitaria SNNA

http://blog.espol.edu.ec/ccpg1001/2eva_iit2011_t4-inscripcion-universitaria-snna/

http://blog.espol.edu.ec/ccpg1001/s2eva_iit2011_t4-inscripcion-universitaria-snna/