Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /real/path/to/dir
- /linked/path/to/dir
- >>> import os
- >>> os.chdir('/linked/path/to/dir')
- >>> print os.getcwd()
- /real/path/to/dir
- import os
- from subprocess import Popen, PIPE
- class CwdKeeper(object):
- def __init__(self):
- self._cwd = os.environ.get("PWD")
- if self._cwd is None: # no environment. fall back to calling pwd on shell
- self._cwd = Popen('pwd', stdout=PIPE).communicate()[0].strip()
- self._os_getcwd = os.getcwd
- self._os_chdir = os.chdir
- def chdir(self, path):
- if not self._cwd:
- return self._os_chdir(path)
- p = os.path.normpath(os.path.join(self._cwd, path))
- result = self._os_chdir(p)
- self._cwd = p
- os.environ["PWD"] = p
- return result
- def getcwd(self):
- if not self._cwd:
- return self._os_getcwd()
- return self._cwd
- cwd = CwdKeeper()
- print cwd.getcwd()
- # use only cwd.chdir and cwd.getcwd from now on.
- # monkeypatch os if you want:
- os.chdir = cwd.chdir
- os.getcwd = cwd.getcwd
- # now you can use os.chdir and os.getcwd as normal.
Add Comment
Please, Sign In to add comment