Articles of contextmanager

StringIO y compatibilidad con la statement ‘with’ (administrador de contexto)

Tengo un código heredado con una función heredada que toma un nombre de archivo como argumento y procesa el contenido del archivo. A continuación se muestra un fax de trabajo del código. Lo que quiero hacer es no tener que escribir en el disco con algo de contenido que genero para usar esta función heredada, […]

¿Cómo puedo esperar a que el __del__ de un objeto termine antes de que se cierre el bucle asíncrono?

Tengo una clase que tendrá un objeto aiohttp.ClientSession en ella. Normalmente cuando usas async with aiohttp.ClientSession() as session: # some code La sesión se cerrará ya que se llama al método __aexit__ de la sesión. No puedo usar un administrador de contexto ya que quiero mantener la sesión persistente durante toda la vida útil del […]

¿Por qué mi función de administrador de contexto no funciona como mi clase de administrador de contexto en python?

En mi código, necesito poder abrir y cerrar un dispositivo correctamente y, por lo tanto, ver la necesidad de usar un administrador de contexto. Si bien un administrador de contexto generalmente se define como una clase con los métodos __enter__ y __exit__ , también parece existir la posibilidad de decorar una función para usarla con […]

Gestores de contexto en Matlab: invocando __enter__ en Matlab

Tengo un paquete de python y me gustaría usar sus clases y métodos en Matlab. Sé que esto se puede hacer directamente desde Matlab 2014b. Quiero decir que todo lo que tienes que hacer es agregar py. Al comienzo de tus declaraciones. Hasta ahora todo bien, sin embargo, no pude averiguar cómo tratar con los […]

Archivo abrir y cerrar en python

He leído que cuando el archivo se abre con el siguiente formato with open(filename) as f: #My Code f.close() No se requiere el cierre explícito del archivo. ¿Alguien puede explicar por qué es así? Además, si alguien cierra explícitamente el archivo, ¿tendrá algún efecto no deseado?

El registrador Python no está imprimiendo mensajes de depuración, aunque está configurado correctamente

Tengo el siguiente código, donde solo quiero jugar con el módulo de registro utilizando contextmanager . from contextlib import contextmanager import logging @contextmanager def log_level(level, name): logger = logging.getLogger(name) old_level = logger.getEffectiveLevel() print(‘log_level.old_level: ‘ + str(old_level)) logger.setLevel(level) print(‘log_level.new_level: ‘ + str(logger.getEffectiveLevel())) try: yield logger finally: logger.setLevel(old_level) if __name__ == ‘__main__’: with log_level(logging.DEBUG, ‘my-log’) as logger: […]

El objective de la statement `with` de Python es inesperadamente Ninguno

Parece que no entiendo algo con — el python with statement. Considera esta clase: class test(object): def __enter__(self): pass def __exit__(self, *ignored): pass ahora, cuando se usa with , como en with test() as michael: print repr(michael) Espero algún resultado como . Pero no tengo ninguno . Algo malo aquí? Cualquier sugerencia ayudaría. (Estoy usando […]

¿Es Python * con * instrucción exactamente equivalente a un bash – (excepto) – finalmente bloquear?

Sé que esto fue ampliamente discutido, pero todavía no puedo encontrar una respuesta para confirmar esto: es la sentencia with idéntica a llamar al mismo código en un bloque try – (excepto) -finally, donde cualquiera que se defina en la función __exit__ de El gestor de contexto se coloca en el bloque finalmente? Por ejemplo, […]

Python contextmanager problema de nueva línea

Usando el administrador de contexto de Python, quiero generar un contenedor para mostrar el progreso similar a Linux de un bloque de código determinado: Doing something… done. [42 ms] Esto está funcionando – tipo de: from contextlib import contextmanager import time @contextmanager def msg(m): print(m + “… “, end=”) t_start = time.time() yield t_duration_ms = […]

¿Cómo manipular la excepción en __exit__ de un administrador de contexto?

Sé que es un estilo malo volver a generar una excepción desde el método __exit__() un administrador de contexto. Por lo tanto, me gustaría agregar un atributo a la instancia que pueda llevar información contextual que no esté disponible si dejo que la excepción se filtre o si la capto. Esto evitará volver a subirlo. […]