找到“父母的中间兄弟”目录的方法

时间:2018-05-21 22:41:03

标签: python python-3.x

我有这个目录树:

C:\A\B\C\D\E\F\myfile.py

我想为我的软件包插入一个目录,如下所示:

import sys
local_package_dir = 'C:\A\B\C\PythonPackages'
sys.path.insert(0, local_package_dir)

我的问题是很多人都在使用各种驱动器名称(D:,E:等)

如何动态遍历目录并转到A\B\C而不关心调用根级驱动器的内容?

我知道__file__,但os功能的哪种组合可以帮助我达到正确的水平?

2 个答案:

答案 0 :(得分:1)

看看pathlib。它是os.path

的新的更好替代品

您可以将路径用作对象。 .parts会有你需要的东西。

import pathlib
p = pathlib.PureWindowsPath('c:/Program Files/PSF')
>>> p.parts
('c:\\', 'Program Files', 'PSF')

p = pathlib.PureWindowsPath('c:/A/B/C/D').parts[1:]
>>> -p.parts
('A', 'B', 'C', 'D')

答案 1 :(得分:-1)

您可以使用os.path.pardir作为父目录的引用(主要是..),然后使用os.path.join()以相对方式提升您的路径,最后{{3} }规范你的道路,例如从C:\\A\\B\\C\\D\\E\\F\\myfile.pyC:\\A\\B\\C您可以执行以下操作:

current_file = "C:\\A\\B\\C\\D\\E\\F\\myfile.py"  # or __file__ if running from myfile.py
path = os.path.dirname(current_file)  # get the file's directory
c_dir = os.path.normpath(os.path.join(path, os.path.pardir, os.path.pardir, os.path.pardir))
# C:\A\B\C

在Python 3.4+上,您还可以使用os.path.normpath()使这些平凡的路径操作更具可忍性。