operación de flujo de archivos pythonw y sistema de gestión simple estudiante

A, método python3 File (Archivo)

método abierto ()

Python método open () se utiliza para abrir un archivo y devuelve un objeto de archivo en el procesamiento de archivos es necesario para utilizar esta función, si el archivo no se puede abrir, lanzará OSError.

Nota: Utilice el método open () debe asegurar que el objeto de archivo cerrado que llama al método close ().

función open () acepta dos parámetros se utilizan en la forma de: un nombre de archivo (file) y un modo (modo).

open(file, mode='r')

La sintaxis completa es:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

parámetros:

  • archivo: Requerido, ruta de archivo (relativa o ruta absoluta).
  • Modo: Opcional, el modo de apertura de archivos
  • amortiguando: un buffer
  • codificación: uso general utf8
  • errores: nivel de error
  • salto de línea: distinguir salto de línea
  • closefd: tipos de parámetros archivo entrante
  • abrelatas:
archivo de objetos comunes:

objeto de archivo usando la función abierta para crear, la tabla se enumeran el archivo de objetos funciones de uso común:

No. Método y Descripción
1 file.close () cierre el archivo. Después de cerrar el archivo no se puede leer y operaciones de escritura.
2 () File.flush archivos de búfer de actualización internos directamente al buffer interno de los datos escritos en el archivo de inmediato, en lugar de esperar pasivamente a que el búfer de salida escrito.
3 file.fileno () devuelve un descriptor de fichero entero (archivo descriptor de la FD número entero), que puede ser utilizado en un método como leer algunos de los módulo os operativo subyacente.
4 file.isatty () si el archivo está conectado a un terminal devoluciones de dispositivos verdaderos, de lo contrario devolverá False.
5 file.next () ** Python 3 en el objeto del archivo no soporta método next (). ** Devuelve el archivo de la siguiente línea.
6 [File.read ( tamaño]) Lee el número especificado de bytes del archivo, no se da, o si la lectura de todos negativos.
7 [FILE.readline ( tamaño]) para leer toda la línea, incluyendo "\ n" caracteres.
8 [File.readlines ( sizeint]) lee y devuelve una lista de todas las filas, si se les da sizeint> 0, la suma de la línea de retorno es de aproximadamente bytes sizeint, puede ser mayor que el sizeint del valor real de lectura, debido a la necesidad de llenar el buffer.
9 [File.seek (offset , donde la]) mover el archivo a una ubicación especificada puntero de lectura
10 file.tell () devuelve la posición actual del fichero.
11 [File.truncate ( tamaño]) la primera línea del primer carácter desde el principio del archivo se trunca, caracteres de tamaño de archivo, sin cantidad representa un corte desde la ubicación actual; todos los personajes serán borrados después del corte, donde los saltos de línea en el sistema representa un 2 Widnows tamaño de la fuente.
12 file.write (str) la cadena en el fichero, devuelve la longitud de caracteres escritos.
13 file.writelines (secuencia) , escribe una lista de cadenas a la secuencia de archivo, si es necesario envoltura tendrá sus propios saltos de línea añaden para cada fila.
El ejercicio para empezar:

Los dos se fusionaron en un archivo txt
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

sección de código:

file_temp1 = {}							#空字典用来存储从文件中读取的数据
file_temp2 = {}

def read_file():
    file1 = open('file1.txt', 'r')      #打开文件流
    lines1 = file1.readlines()          #返回列表
    for line in lines1:
        line = line.strip()
        content = line.split(',')
        file_temp1[content[0]] = content[1]
    file1.close()                       #关闭文件流
    with open('fiel2.txt', 'r') as file2:           #无需手动关闭文件流
        lines2 = file2.readlines()
        for line in lines2:
            line = line.strip()
            content = line.split(',')
            file_temp2[content[0]] = content[1]

def merge_file():
    lines = []
    header = "姓名\t  电话\t    邮箱\n"
    lines.append(header)            #插入到列表末尾、unshitf、浅拷贝
    for key in file_temp1:          #==for key in file_temp1.keys()
        line = ''
        if key in file_temp2:
            line = line + '\t'.join([key, file_temp1[key], file_temp2[key]])
            line += '\n'
        else:
            line = line + '\t'.join([key, file_temp1[key], ''])
            line += '\n'
        lines.append(line)
    for key in file_temp2:
        line = ''
        if key not in file_temp1:
            line += '\t'.join([key, '', file_temp2[key]])
            line += '\n'
        lines.append(line)
    with open('file3.txt', 'w') as newfile:         #创建并写入新文件
        newfile.writelines(lines)

read_file()
merge_file()
En segundo lugar, verdadero sistema de gestión simple estudiante, los datos del estudiante almacenados en el documento, el apoyo CRUD

Los estudiantes leen datos de un archivo -> en la memoria, realizar CRUD -> Guardar archivo de la parte posterior (nuevo archivo)
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

#面向对象、封装
class StudentSys:

    #初始化
    def __int__(self):
        self.students = {}                           #字典存储学生信息
        file = open('file4.txt', 'r')
        lines = file.readlines()                     #一列表的形式返回数据
        if len(lines) > 0:                           #不为空则赋值、要知道文件里面的内容才能具体处理
            for key in lines:
                line = key.strip().split()
                self.students[line[0]] = line[1]
        file.close()

    #插入字典、判断是否存在
    def addStu(self):
        name = input("please input a student's name:\n")
        stuID = input("please input a unique student's ID:\n").strip()
        while True:
            if stuID in self.students:
                stuID = input("The student ID already exists, please enter again:\n").strip()
            else:
                break
        self.students[stuID] = name
        print("your operation is successful!")

    #输入ID、存在则删除
    def deleteStu(self):
        stuID = input("please inout a student's ID:\n").strip()
        while True:
            if stuID not in self.students:
                stuID = input("The student ID not exists, please enter again:\n").strip()
            else:
                break
        del(self.students[stuID])
        print("your operation is successful!")


    def updateStu(self):
        stuID = input("please inout a student's ID:\n").strip()
        while True:
            if stuID not in self.students:
                stuID = input("The student ID not exists, please enter again:\n").strip()
            else:
                break
        name = input("a student's name will be updated\n")
        self.students[stuID] = name
        print("your operation is successful!")

    def queryStu(self):
        stuID = input("please inout a student's ID:\n").str5ip()
        if stuID not in self.students:
            print("The student ID not exists!")
        else:
            print('find a student ID: ', stuID, 'name: ' + self.students[stuID])

    def showAll(self):
        print("total have", len(self.students), "students:")
        for stuID in self.students:
            print(stuID, '->', self.students[stuID])

    #写入本地文件、最终一次性写入
    def quitAndsave(self):
        file = open('file5.txt', 'w')
        lines = []          #空列表存储需要写入的信息
        for key in self.students:
            line = ''
            line += '\t'.join([ str(key), self.students[key] ])
            line += '\n'
            lines.append(line)
        file.writelines(lines)
        file.close()
        print("The program has been quit")

#实例化类
stuSys = StudentSys()
stuSys.__int__()

#主函数、try错误处理
while True:
    print('''****welcome to student management system**********
    1、add a new student
    2、delete a student
    3、update a student information
    4、query a student information
    5、show all students
    6、quit the program''')
    print("*" * 50)
    try:
        option = int(input("please input your options:\n"))
    except Exception:
        print("a error, please input a integer again!")
        option = int(input("please input your options:\n"))
    if option == 1:
        stuSys.addStu()
    elif option == 2:
        stuSys.deleteStu()
    elif option == 3:
        stuSys.updateStu()
    elif option == 4:
        stuSys.queryStu()
    elif option == 5:
        stuSys.showAll()
    elif option == 6:
        stuSys.quitAndsave()
        break
    else:
        print("a error, please input again!")
Publicado 40 artículos originales · ganado elogios 2 · Vistas 2387

Supongo que te gusta

Origin blog.csdn.net/qq_42404383/article/details/105052198
Recomendado
Clasificación