2016-02-21 72 views
1

使用OS模块更改目录时,更改是全局性的。有没有办法在本地更改目录?Python,如何在本地更改目录?

编辑:是的,对不起。本地在另一个线程。当您使用线程模块时,普通chdir将在所有线程上更改工作目录。

+1

这是什么意思“本地”和“全球”在这里?就我所知,目前只有一个工作目录。 – Blckknght

+0

我们无法真正回答你的问题,直到你清楚你的条款是什么意思?是关于多线程程序中的CWD? – tdelaney

+0

是的,在多线程,抱歉忘了提及 – Tom

回答

1

使用contextlib2.contextmanager编写装饰器/上下文管理器来执行此操作并不困难。

import contextlib2 
import os 

@contextlib2.contextmanager 
def restore_chdir(dir_): 
    orig= os.getcwd() 
    os.chdir(dir_) 
    try: 
     yield 
    finally: 
     os.chdir(orig) 

现在你可以使用这个为:

with restore_chdir('/foo'): 
    ... 

或作为装饰功能。

0

您可以使用os模块简单地定义一个函数,该模块可以恢复目录。

import os 
def func(): 
    original = os.getcwd() 
    os.chdir("Your Directory Name") 
    ## Do something here 
    os.chdir(original)