使用 python pathlib 查找上游目录的绝对路径

Finding the absolute path to an upstream directory using python pathlib

我有一个 pathlib.Path 对象,想找到父文件夹的绝对路径,称为“BASE”。但是,我不知道“BASE”文件夹在设备树上有多远。我只知道 pathlib.Path 将包含一个名为“BASE”的文件夹。 示例:

import pathlib

# the script is located at:
my_file_dir = pathlib.Path(__file__).parent

# some pathlib function to find the absolute path to BASE
# input_1: /some/path/BASE/some/more/layers/script.py
# output_1: /some/path/BASE
# input_2: /usr/BASE/script.py
# output_2: /usr/BASE

在早期的 python 版本中,我会使用 os.path、os.path.split() 并搜索字符串以获取目录。现在看来,pathlib 应该用于这些事情。但是怎么办?

编辑: 这是我使用 pathlib 解决它的方法。

def get_base_dir(current_dir: Path, base: str) -> Path:
    base_parts = current_dir.parts[:current_dir.parts.index(base)+1]
    return Path(*base_parts)

老实说,@victor__von__doom的解决方案更好。

我认为您可以在命令行 args 上使用一些基本的字符串处理来更简单地完成此操作:

import sys

script_path, my_file_dir = sys.argv[0], ''
try:
    my_file_dir = script_path[:script_path.index('BASE')]
except ValueError:
    print("No path found back to BASE"); exit()

sys 似乎比这里的 pathlib 更容易选择。