Articles of with statement

¿Es una buena práctica depender de python con … como statement?

Tengo curiosidad por saber si se considera seguro o una buena práctica depender de python’s con … como afirmación. Por ejemplo al abrir un archivo: with open(“myfile”,”w”) as myFile: #do something Así que en este ejemplo, me myFile.close() llamar explícitamente a myFile.close() sin embargo, puedo asumir que fue llamado cuando Python salió de la instrucción […]

En Python, si vuelvo dentro de un bloque “con”, ¿se cerrará el archivo?

Considera lo siguiente: with open(path, mode) as f: return [line for line in f if condition] ¿Se cerrará el archivo correctamente o el uso de return alguna manera no pasa por el administrador de contexto ?

Python multilínea con statement

¿Cuál es una forma limpia de crear una multilínea with python? Quiero abrir varios archivos dentro de una sola, pero es lo suficientemente a la derecha que lo quiero en varias líneas. Me gusta esto: class Dummy: def __enter__(self): pass def __exit__(self, type, value, traceback): pass with Dummy() as a, Dummy() as b, Dummy() as […]

¿Cuál es la ventaja de usar la statement ‘with .. as’ en Python?

con abierto (“hello.txt”, “wb”) como f: f.write (“Hola Python! \ n”) parece ser el mismo que f = open(“hello.txt”, “wb”) f.write(“Hello Python!\n”) f.close() ¿Cuál es la ventaja de usar open .. como en lugar de f =? ¿Es solo azúcar sintáctica? ¿Solo guardando una línea de código?

Significado de la frase “con” sin la palabra clave “as”

Estoy familiarizado con el uso de python’s with statement como un medio para asegurar la finalización de un objeto en el caso de que se produzca una excepción. Esto usualmente se ve como with file.open(‘myfile.txt’) as f: do stuff… que es mano corta para f = file.open(‘myfile.txt’): try: do stuff… finally: f.close() o cualquier otra […]

Detectando una excepción en el administrador de contexto __enter __ ()

¿Es posible garantizar que se __exit__() método __exit__() incluso si hay una excepción en __enter__() ? >>> class TstContx(object): … def __enter__(self): … raise Exception(‘Oops in __enter__’) … … def __exit__(self, e_typ, e_val, trcbak): … print “This isn’t running” … >>> with TstContx(): … pass … Traceback (most recent call last): File “”, line 1, […]

¿Romper o salir de la statement “con”?

Solo me gustaría salir de una statement con ciertas condiciones: with open(path) as f: print ‘before condition’ if : break #syntax error! print ‘after condition’ Por supuesto, lo anterior no funciona. ¿Hay alguna forma de hacer esto? (Sé que puedo invertir la condición: if not : print ‘after condition’ , ¿es como se muestra arriba?)

Gestor de contexto para MySQLdb de Python

Estoy acostumbrado a (¿estropeado por?) La interfaz SQLite de Python para tratar con bases de datos SQL. Una buena característica de la API SQLite de python es el “administrador de contexto”, es decir, python’s with statement. Normalmente ejecuto consultas de la siguiente manera: import as sqlite with sqlite.connect(db_filename) as conn: query = “INSERT OR IGNORE […]

El objeto se convierte en Ninguno cuando se usa un administrador de contexto

¿Por qué no funciona esto? class X: var1 = 1 def __enter__(self): pass def __exit__(self, type, value, traceback): pass with X() as z: print z.var1 Yo obtengo: print z.var1 AttributeError: ‘NoneType’ object has no attribute ‘var1’

¿Crear un bloque “con” en varios gestores de contexto?

Supongamos que tiene tres objetos que adquiere a través del administrador de contexto, por ejemplo, un locking, una conexión db y un socket ip. Puedes adquirirlos por: with lock: with db_con: with socket: #do stuff ¿Pero hay una manera de hacerlo en un bloque? algo como with lock,db_con,socket: #do stuff Además, si es posible, dado […]