首页 > 解决方案 > 如何使用 pathlib 处理以 ~ 开头的路径?

问题描述

我正在编写一个需要一些路径作为输入的 cli 工具。

我正在用 python 编写这个工具,并且不想使用低于 3.6 的 python 解释器。在处理 python 中的路径时,使用包pathlib似乎是现代的方式。因此,如果可能的话,我想离开osos.path落后。

似乎 pathlib 将路径解释~/test/为当前工作目录的相对路径,下面的代码显示了它

import pathlib

test_path = pathlib.Path('~/test')
absolute_path = test_path.absolute()

print(f"{str(test_path):>31}\n{str(absolute_path):>31}")
# output:
#              ~/test
# /home/myUser/~/test

如何使用 pathlib 识别~以绝对路径开头的每个路径并自动扩展~到用户主目录?

标签: pythonpathlib

解决方案


答案很简单,.expanduser()在您的 Path 对象上使用而不是.absolute()它将 ~ 替换为运行脚本的用户的主目录,结果也是一个绝对路径,仅当 ~ 位于开头:

import pathlib

test_path = pathlib.Path('~/test')
absolute_path = test_path.expanduser()
# If ~ is somewhere in the middle of the path, use .resolve() to get an absolute path.

print(f"{str(test_path):>31}\n{str(absolute_path):>31}")
# output:
#            ~/test
# /home/myUser/test

推荐阅读