.. _consider-using-with: consider-using-with / R1732 =========================== **Message emitted:** ``Consider using 'with' for resource-allocating operations`` **Description:** *Emitted if a resource-allocating assignment or call may be replaced by a 'with' block. By using 'with' the release of the allocated resources is ensured even in the case of an exception.* **Problematic code:** ``close.py``: .. literalinclude:: /data/messages/c/consider-using-with/bad/close.py :language: python ``not_even_close.py``: .. literalinclude:: /data/messages/c/consider-using-with/bad/not_even_close.py :language: python **Correct code:** .. literalinclude:: /data/messages/c/consider-using-with/good.py :language: python **Additional details:** Calling ``write()`` without using the ``with`` keyword or calling ``close()`` might result in the arguments of ``write()`` not being completely written to the disk, even if the program exits successfully. This message applies to callables of Python's stdlib which can be replaced by a ``with`` statement. It is suppressed in the following cases: - the call is located inside a context manager - the call result is returned from the enclosing function - the call result is used in a ``with`` statement itself **Related links:** - `Python doc: Reading and writing files `_ - `PEP 343 `_ - `Context managers in Python `_ by John Lekberg - `Rationale `_ Created by the `refactoring `__ checker.