import os
from contextlib import contextmanager
@contextmanager
def cwd(path):
oldpwd = os.getcwd()
os.chdir(path)
try:
yield
finally:
os.chdir(oldpwd)
import sys
import os
from mycwd import cwd
def do_something(path):
with cwd(path):
content = os.listdir()
if len(content) < 10:
return
def main():
if len(sys.argv) != 2:
exit(f"Usage: {sys.argv[0]} PATH")
path = sys.argv[1]
print(os.getcwd())
do_something(path)
print(os.getcwd())
main()
$ python context_cd.py /tmp
/home/gabor/work/slides/python/examples/context
/home/gabor/work/slides/python/examples/context
$ python context_cd.py /opt
/home/gabor/work/slides/python/examples/context
/home/gabor/work/slides/python/examples/context