如何使用pathlib处理以~开头的路径?
How to use pathlib to process paths that begin with ~?
我正在编写一个需要一些路径作为输入的 cli 工具。
我正在 python 中编写此工具,并且不想使用低于 3.6 的 python 解释器。在处理 python 中的路径时,使用包 pathlib
似乎是现代的方式。所以我想尽可能留下 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
我正在编写一个需要一些路径作为输入的 cli 工具。
我正在 python 中编写此工具,并且不想使用低于 3.6 的 python 解释器。在处理 python 中的路径时,使用包 pathlib
似乎是现代的方式。所以我想尽可能留下 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