在Python中更改为已知目录名称但未知的绝对路径

时间:2014-01-08 19:52:11

标签: python working-directory

我想将cwd更改为特定文件夹。 文件夹名称已知;但是,它的路径会有所不同。

我正在尝试以下但似乎无法得到我想要的东西:

absolute_path = os.path.abspath(folder_name)
directory_path = os.path.dirname(absolute_path)
os.chdir(directory_path)

这不能解决我正在寻找的问题,因为它将原始cwd保持在运行.py文件的位置。我尝试在第一个代码块之前添加os.chdir(os.path.expanduser("~"));但是,它只是创建了/ home / user / folder_name的绝对路径。

当然,如果我可以使用简单的导入,我会对任何事情持开放态度。

使用特定名称获取所有文件夹路径的正确方法是什么?

2 个答案:

答案 0 :(得分:3)

def find_folders(start_path,needle):
   for cwd, folders, files,in os.walk(start_path):
       if needle in folders:
           yield os.path.join(cwd,needle)

for path in find_folders("/","a_folder_named_x"):
    print path

所有这一切都是从给定的起始路径向下走你的目录结构并找到名为needle的文件夹的所有出现

在示例中,它从系统的根文件夹开始,并查找名为“a_folder_named_x”的文件夹...如果您需要搜索整个系统,则可能需要一段时间才能运行...

答案 1 :(得分:3)

您需要了解abspath接受相对路径名(可能只是文件名),并为您提供等效的绝对(完整)路径名。相对路径名是从当前目录开始的路径名; 不涉及搜索,因此它总是指向一个地点(可能存在也可能不存在)。

实际需要的是搜索目录树,从~开始或在您的案例中有意义的任何目录,直到找到具有所请求名称的文件夹。这就是@Joran的代码所做的。