使用OS模块更改目录时,将进行全局更改。有没有办法在本地更改目录?
编辑:是的,对不起。本地在另一个线程。当您使用线程模块时,普通的chdir会在所有线程上更改工作目录。答案 0 :(得分: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'):
...
或作为功能装饰者。
答案 1 :(得分:0)
您可以使用os
模块定义一个函数,该模块可以恢复目录。
import os
def func():
original = os.getcwd()
os.chdir("Your Directory Name")
## Do something here
os.chdir(original)