使用 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
更容易选择。
我有一个 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
更容易选择。