On Tue, 2021-09-14 at 21:43 +0200, Marc-Andre Lemburg wrote: > Hello all, > > I sometimes write Python scripts which need to work in specific > work directories. > > When putting such code into functions, the outer function typically > does not expect the current work dir (CWD) to be changed, so wrap the > code which need the (possibly) modified CWD using a simply context > manager along the lines of: > > class workdir: > def __init__(self, dir): > self.dir = dir > def __enter__(self): > self.curdir = os.getcwd() > os.chdir(self.dir) > def __exit__(self, *exc): > os.chdir(self.curdir) > return False > > Would there be interest in adding something like this to the os module > as os.workdir() ? > > Example: > > def backup_home_dir(account): > with os.workdir(os.path.join('/home', account)): > # Create a backup of the account dir, rooted at the account's > # home dir > restic.backup(repo, '.') > > Notes: > - The context manager is not thread safe. There's no thread safe model > for the current work dir. OTOH, scripts usually don't use threads, > so not a big deal. > - The context manager could be made more elaborate, e.g. adding optional > logging for debugging purposes. > - The same could be added to pathlib's objects as .workdir() method > returning a context manager. > > Thoughts ? > > Thanks,
bpo: https://bugs.python.org/issue25625 PR: https://github.com/python/cpython/pull/28271 Filipe Laíns
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/SRILWIWGNFTL6B2QOLS4KIMLEXEUAHCB/ Code of Conduct: http://python.org/psf/codeofconduct/