可以说我有保存的目录如何分割出从os.path.dirname接收路径()
E:\Data\App
内一条巨蟒文件,所以当我做,这表明我上面的路径。现在可以说,我想创建内部E:\Data\Conf\
一个新的文件,所以如何切出应用程序和使用的conf文件并将其保存里面E:\Data\Conf
我不能直接使用的完整路径,因为E:\Data\
不会是常见的,可能会有所不同。
谢谢。
可以说我有保存的目录如何分割出从os.path.dirname接收路径()
E:\Data\App
内一条巨蟒文件,所以当我做,这表明我上面的路径。现在可以说,我想创建内部E:\Data\Conf\
一个新的文件,所以如何切出应用程序和使用的conf文件并将其保存里面E:\Data\Conf
我不能直接使用的完整路径,因为E:\Data\
不会是常见的,可能会有所不同。
谢谢。
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.abspath
与os.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"
。
嗨。谢谢。你能解释一下吗? –
@SAndrew我加了一点解释,还有什么还不清楚吗? – tzaman
感谢您的解释。最后一个疑问,如果我有一个像E:/ data1/data2/data3/data4'这样的目录结构,并且我想从data4直接移动到data1。因此,不是一次又一次地执行'os.path.dirname()',还有没有其他方法可以直接跳转到data1? –
你可以这样做:
path = 'E:\Data\conf' # Or however you will assign this
dir_path = '\\'.join(path.split('\\')[:-1]) + '\\' # 'E:\Data\'
这基本上由\
分割的路径字符串,然后重建所有,但在树中的最后一个路径的字符串。
你可以再次调用'dirname'以再上一层。 – tzaman