1
使用OS模块更改目录时,更改是全局性的。有没有办法在本地更改目录?Python,如何在本地更改目录?
编辑:是的,对不起。本地在另一个线程。当您使用线程模块时,普通chdir将在所有线程上更改工作目录。
使用OS模块更改目录时,更改是全局性的。有没有办法在本地更改目录?Python,如何在本地更改目录?
编辑:是的,对不起。本地在另一个线程。当您使用线程模块时,普通chdir将在所有线程上更改工作目录。
使用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'):
...
或作为装饰功能。
您可以使用os
模块简单地定义一个函数,该模块可以恢复目录。
import os
def func():
original = os.getcwd()
os.chdir("Your Directory Name")
## Do something here
os.chdir(original)
这是什么意思“本地”和“全球”在这里?就我所知,目前只有一个工作目录。 – Blckknght
我们无法真正回答你的问题,直到你清楚你的条款是什么意思?是关于多线程程序中的CWD? – tdelaney
是的,在多线程,抱歉忘了提及 – Tom