查找"intermediate sibling of parent"目录的方法



我有这个目录树:

C:ABCDEFmyfile.py

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

import sys
local_package_dir = 'C:ABCPythonPackages'
sys.path.insert(0, local_package_dir)

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

如何动态遍历目录并访问ABC而不关心根级驱动器的名称?

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

看看 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')

您可以使用os.path.pardir作为对父目录的引用(本质上是..(,然后使用os.path.join()以相对方式向上移动路径,最后os.path.normpath()规范化您的路径,例如从C:\A\B\C\D\E\F\myfile.py到到达C:\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:ABC

在 Python 3.4+ 上,您还可以使用pathlib使这些平凡的路径操作更容易忍受。

最新更新