导航到顶级模块目录的Python函数
我正试图用python编写一个函数,用于导航到我正在处理的项目的顶级目录,以便于记账。我认为这会更容易,而不是到处写abs路径,这些路径可能会根据机器的不同而变化 然而,我的funct并不是非常复杂,在某些情况下会进入inf循环。有人有这样的好策略吗导航到顶级模块目录的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]
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()了吗?