A "scopeguard" for Python
Robert Kern
robert.kern at gmail.com
Wed Mar 3 12:00:04 EST 2010
On 2010-03-03 09:39 AM, Mike Kent wrote:
> What's the compelling use case for this vs. a simple try/finally?
>
> original_dir = os.getcwd()
> try:
> os.chdir(somewhere)
> # Do other stuff
> finally:
> os.chdir(original_dir)
> # Do other cleanup
A custom-written context manager looks nicer and can be more readable.
from contextlib import contextmanager
import os
@contextmanager
def pushd(path):
original_dir = os.getcwd()
os.chdir(path)
try:
yield
finally:
os.chdir(original_dir)
with pushd(somewhere):
...
I don't think a general purpose ScopeGuard context manager has any such benefits
over the try: finally:, though.
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list