导航到顶级模块目录的Python函数

时间:2013-08-26 18:31:50

标签: python operating-system

我正在尝试在python中编写一个函数,导航到我正在为记账目的而工作的项目的顶级目录。而不是在任何地方编写可能因机器而改变的abs路径,我认为这会更容易。

但是,我的功能并不是非常复杂,在情境中会进入inf循环。有没有人有这样的好策略?

def chdir_top():
    while os.getcwd().split('/')[-1] != "myproj":
        os.chdir('..')
    if os.getcwd().split('/')[-2] != "myproj" and 
               "myproj" in os.listdir(os.getcwd()):
        os.chdir("myproj")

谢谢。

1 个答案:

答案 0 :(得分:2)

请勿使用os.getcwd();请改用模块级__file__名称。如果当前工作目录是其他地方,当您到达根目录并且不断上升到一个目录时,最终会进入无限循环。

import os.path

here = os.path.dirname(os.path.abspath(__file__))

现在here是包含当前Python文件的目录的路径。使用它来查找项目的顶部(,使用chdir(),但使用os.path函数)。