Directorio de artículos
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)