python - 如何使用 pathlib 处理以 ~ 开头的路径?
问题描述
我正在编写一个需要一些路径作为输入的 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 识别~
以绝对路径开头的每个路径并自动扩展~
到用户主目录?
解决方案
答案很简单,.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
推荐阅读
- django - 我不断收到此错误:TypeError: data.map is not a function
- sql - 包含所有信息和结构的备份表
- angularjs - AngularJS | 为同一控制器的特定实例处理 $broadcast 和 $on
- reactjs - 在不重新渲染循环的情况下循环和修改对象的正确方法
- vue.js - 如何将组件的逻辑放在文件 .vue 本身之外
- javascript - 用户输入正确的用户名和密码后,如何使提交按钮重定向到另一个页面?
- node.js - 错误:运行 firebase init 时找不到模块“fast-safe-stringify”
- c - 将二叉树转换为简单链表
- node.js - 自托管 APIM 开发人员门户:无法使用“npm run publish”在本地发布
- c# - Nopcommerce 4.2 - 如何获取 _ProductBox 部分视图的类别