utilizar tabla imagen grande extendido decodificar decodificando convertir completo codigos codigo codificando binario archivo aprender acentos abecedario python file

python - imagen - tabla ascii



cómo obtener el contenido de un pequeño archivo ascii en python? (5)

Digamos que queremos implementar un equivalente del file_get_content .

cual es la mejor practica? (elegante y confiable)

Aquí hay una proposición, ¿están en lo correcto?

usando with declaración:

def file_get_contents(filename): with file(filename) as f: s = f.read() return s

está utilizando estándar open() seguro?

def file_get_contents(filename): return open(filename).read()

¿Qué sucede con el descriptor de archivo en cualquier solución?


En la implementación actual de CPython, ambos generalmente cerrarán el archivo de inmediato. Sin embargo, el lenguaje Python no ofrece ninguna garantía para el segundo: el archivo eventualmente se cerrará, pero el finalizador no se podrá llamar hasta el próximo ciclo de gc. Implementaciones como Jython e IronPython funcionarán así, por lo que es una buena práctica cerrar de forma explícita tus archivos.

Yo diría que usar la primera solución es la mejor práctica, aunque open generalmente se prefiere file . Sin embargo, tenga en cuenta que puede acortarlo un poco si prefiere la brevedad del segundo ejemplo:

def file_get_contents(filename): with open(filename) as f: return f.read()

La parte __exit__ del gestor de contexto se ejecutará cuando abandones el cuerpo por algún motivo, incluidas las excepciones y el regreso de la función; no es necesario utilizar una variable intermedia.



Usar la declaración con es en realidad la mejor manera de asegurarse de que el archivo esté realmente cerrado.

Dependiendo del comportamiento del recolector de basura para esta tarea, podría funcionar, pero en este caso, hay una buena manera de estar seguro en todos los casos, entonces ...


with se asegurará de que el archivo esté cerrado cuando quede el bloque.

En su segundo ejemplo, el identificador del archivo puede permanecer abierto (Python no garantiza que esté cerrado o si no lo hace explícitamente).


import os def file_get_contents(filename): if os.path.exists(filename): fp = open(filename, "r") content = fp.read() fp.close() return content

En este caso, devolverá None si el archivo no existió y el descriptor de archivo se cerrará antes de que salgamos de la función.