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

导航到顶级模块目录的Python函数,python,operating-system,Python,Operating System,我正试图用python编写一个函数,用于导航到我正在处理的项目的顶级目录,以便于记账。我认为这会更容易,而不是到处写abs路径,这些路径可能会根据机器的不同而变化 然而,我的funct并不是非常复杂,在某些情况下会进入inf循环。有人有这样的好策略吗 def chdir_top(): while os.getcwd().split('/')[-1] != "myproj": os.chdir('..') if os.getcwd().split('/')[-2]

我正试图用python编写一个函数,用于导航到我正在处理的项目的顶级目录,以便于记账。我认为这会更容易,而不是到处写abs路径,这些路径可能会根据机器的不同而变化

然而,我的funct并不是非常复杂,在某些情况下会进入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")
谢谢。

不要为此使用
os.getcwd()
;改用模块级
\u文件\u
名称。如果当前工作目录位于其他位置,那么当您到达根目录并持续无法到达一个目录时,您将陷入无限循环

import os.path

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

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

Ah,那么这个呢。here=os.path.dirname(os.path.abspath(文件))os.chdir(此处),而os.getcwd().split('/')[-1]!='myprojroot':os.chdir(“..”)os.getcwd()应该是安全的,如果我们保证将chdir转换为somewhere@LucasOu-杨:为什么要使用chdir()?对不起,我对操作系统模块不是很熟悉。如何通过os.path实现这一点?@LucasOu-Yang:您将
存储在项目的顶级模块中;这样,您就已经拥有顶级目录,而不必“向上”。您还可以使用
os.path.join()
os.path.normpath()
路径元素添加到
此处的
变量中,并将这些元素解析为“向上”几级的绝对路径。您看过os.path.join()了吗?