2017-07-19 22 views
1

可以说我有保存的目录如何分割出从os.path.dirname接收路径()

E:\Data\App 

内一条巨蟒文件,所以当我做​​,这表明我上面的路径。现在可以说,我想创建内部E:\Data\Conf\一个新的文件,所以如何切出应用程序和使用的conf文件并将其保存里面E:\Data\Conf

我不能直接使用的完整路径,因为E:\Data\不会是常见的,可能会有所不同。

谢谢。

+0

你可以再次调用'dirname'以再上一层。 – tzaman

回答

0
from os.path import dirname, join 

file_dir = dirname(the_file) 
parent_dir = dirname(file_dir) 
conf_dir = join(parent_dir, 'Conf') 

dirname总是得到包含任何路径你通过它,因此调用它在你的文件,将让你的应用程序目录的目录;再次在应用程序目录中调用它会让你成为那个的父母。然后,您可以使用os.path.join附加"Conf"或其他任何您想要的目录。

另一种方法是使用os.path.abspathos.pardir一起去的任何数量的级别:

import os 
from os.path import abspath, dirname, join 

conf_dir = abspath(join(dirname(the_file), os.pardir, "Conf")) 
             #^You can add more of these to go up the heirarchy 

join电话与os.pardir将建立像"E:\Data\App\..\Conf"的路径,abspath将它分解为"E:\Data\Conf"

+0

嗨。谢谢。你能解释一下吗? –

+0

@SAndrew我加了一点解释,还有什么还不清楚吗? – tzaman

+0

感谢您的解释。最后一个疑问,如果我有一个像E:/ data1/data2/data3/data4'这样的目录结构,并且我想从data4直接移动到data1。因此,不是一次又一次地执行'os.path.dirname()',还有没有其他方法可以直接跳转到data1? –

1

你可以这样做:

path = 'E:\Data\conf' # Or however you will assign this 
dir_path = '\\'.join(path.split('\\')[:-1]) + '\\' # 'E:\Data\' 

这基本上由\分割的路径字符串,然后重建所有,但在树中的最后一个路径的字符串。