问题描述
我正在编写一个cli工具,需要一些路径作为输入。
我正在用python编写此工具,并且不想在3.6以下使用任何python解释器。使用包pathlib
似乎是处理python中路径的现代方法。因此,我想尽可能地将os
和os.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将以~
开头的每个路径识别为绝对路径,并自动将~
扩展到用户的主目录中?
解决方法
答案很简单,在您的Path对象上使用.expanduser()
而不是.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