Python con archivos de lectura y escritura en detalle

1. Información general

  • "Métodos tradicionales": al leer y escribir archivos, siempre apague escribir la declaración, no solo es fácil de olvidar, sino que la redacción también es más complicada
  • "con open () como método" : para lograr la misma funcionalidad, pero la declaración es más concisa

2 Detallado

2.1 Diferencia

2.1.1 Métodos tradicionales

path = r"C:\Users\wangyou\Desktop\1"

full_file_name = path + r'\1.txt'

file = open(full_file_name, 'r')
try:
    file_content = file.read()
    print(file_content)
finally:
    file.close()

2.1.2 con open () como método

  • Es exactamente igual que el "método tradicional" anterior (cuando es anormal, el archivo se cierra automáticamente)
path = r"C:\Users\wangyou\Desktop\1"

full_file_name = path + r'\1.txt'

with open(full_file_name, 'r') as file:  # 自定义名称,如:file
    print(file.read())

2.2 con open () como principio

  • La idea básica es que el objeto evaluado por con debe tener un método enter () y un método exit () .
  • Enter () : este método se asigna para devolver el valor como después de la variable
  • Exit () : cuando con después de que todos los bloques de código se hayan ejecutado posteriormente, entonces la ejecución del método (por ejemplo: file.close ())

Se recomienda depurar el siguiente código:

class Sample:
    def __enter__(self):
        print("In __enter__()")
        return "Foo"

    def __exit__(self, type, value, trace):
        print("In __exit__()")


def get_sample():
    return Sample()


if __name__ == '__main__':
    with get_sample() as sample:
        print("sample:", sample)

Resultados de la prueba:

In __enter__()
sample: Foo
In __exit__()

3 ejemplo

def write_file(path):
    with open(path, 'w', encoding='utf-8') as file:  # 'a': 追加
        file.write("Hello, Python!")


def read_file(path):
    with open(path, 'r', encoding='utf-8') as file:
        print(file.read())


if __name__ == '__main__':
    path = r"C:\Users\wangyou\Desktop\1"

    full_file_name = path + r'\1.txt'

    write_file(full_file_name)
    read_file(full_file_name)

Supongo que te gusta

Origin blog.csdn.net/qq_34745941/article/details/108669264
Recomendado
Clasificación