From: Steve Holden on 16 Mar 2010 13:00 Phlip wrote: > Chris Rebert wrote: > >> The next closest thing would probably be the Python Cookbook:http://code.activestate.com/recipes/langs/python/ > > One thing I really like about ... my hacked version of path.py ... is > path.cd( lambda: ... ). It works great inside fabfile.py to > temporarily switch to a different folder: > > sample_project = path('sample_project').abspath() > > def run(): > sample_project.cd( lambda: > _sh('python manage.py runserver 0.0.0.0:8000 -- > settings=test_settings') ) > > After the lambda runs, we exception-safely return to the home folder. > > (BTW I'm aware that a fabfile.py command with only one statement will > return to its shell and remain in the correct folder. It's just ... > the thought!) > > This be .cd(): > > class path: > > def cd(self, block=None): > previous = path(os.path.curdir).abspath() > self.chdir() > > if block: > try: block() > finally: previous.chdir() > > That's based on Jason Orendoff's work at http://www.jorendorff.com/articles/python/path > Wouldn't this be better written as a context manager? Be aware also that this won't work well in a multi-threaded environment (assuming os.path.chdir is ultimately used to change directories) because it effects the process's (globaL current directory. regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 See PyCon Talks from Atlanta 2010 http://pycon.blip.tv/ Holden Web LLC http://www.holdenweb.com/ UPCOMING EVENTS: http://holdenweb.eventbrite.com/ |