You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1019 B
Python

#!/usr/bin/env python2.7
# Examples from:
# https://stackoverflow.com/questions/3012488/what-is-the-python-with-statement-designed-for
from contextlib import contextmanager
from tempfile import mkdtemp
import os
import shutil
@contextmanager
def working_directory(path):
current_dir = os.getcwd()
os.chdir(path)
try:
yield
finally:
os.chdir(current_dir)
@contextmanager
def just_a_test():
try:
print "just trying..."
yield
finally:
print "finally!"
@contextmanager
def temporary_dir(*args, **kwds):
name = mkdtemp(*args, **kwds)
try:
yield name
finally:
shutil.rmtree(name)
with working_directory("/tmp"), just_a_test():
# do something within data/stuff
print os.getcwd()
# here I am back again in the original working directory
print os.getcwd()
with temporary_dir() as tmpdir:
print tmpdir
tmpfile = tmpdir + "/foo"
with open(tmpfile, "w") as f:
f.write("foo")
# tmpdir is now gone