为什么pathlib.Path(__ file __)。parent.parent对我的工作目录敏感?

MatrixManAtYrService

我有一个位于两个目录下的脚本。

❯ tree
.
└── foo
    └── bar
        └── test.py
❯ cd foo/bar
❯ cat test.py

    from pathlib import Path
    print(Path(__file__).parent)
    print(Path(__file__).parent.parent)

当我从包含它的目录中运行它时,PathLib认为该文件的祖父母与父文件相同。

❯ python test.py

    . # <-- same
    . # <-- directories

但是,当我从顶层运行它时,PathLib的行为正确。

❯ cd ../..
❯ python foo/bar/test.py

    foo/bar # <-- different
    foo     # <-- directories

我是否对PathLib的API有误解,还是其他原因导致其输出对我的工作目录敏感?

伊恩·谢尔文顿

您需要调用Path.resolve()以使您的路径成为绝对路径(完整路径,包括所有父目录并删除所有符号链接)

from pathlib import Path
print(Path(__file__).resolve().parent)
print(Path(__file__).resolve().parent.parent)

这将导致结果包含每个目录的完整路径,但是无论从何处调用行为,该行为都将起作用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP Get Relative Path from Parent to Included File

来自分类Dev

为什么新的File(File parent,String childName)表现不明显?

来自分类Dev

为什么新的File(File parent,String childName)表现不明显?

来自分类Dev

为什么PATH ='$ PATH:/ Path / to / bin'覆盖我的PATH?

来自分类Dev

为什么os.path.dirname(__ file__)在Django中工作?

来自分类Dev

什么是 window.parent.parent

来自分类Dev

为什么是File.expand_path(__ FILE__)?

来自分类Dev

为什么在Windows中使用file.create在R中创建多个目录会导致Windows中的无效“ path”参数

来自分类Dev

为什么在Windows中使用file.create在R中创建多个目录会导致Windows中的无效“ path”参数

来自分类Dev

为什么无法识别我的PATH更改?

来自分类Dev

当file_path是相对路径时,os.path.isfile(file_path)返回false,为什么?

来自分类Dev

Rails:为什么调用parent上的before_save?

来自分类Dev

为什么this.parent()没有定义为函数?

来自分类Dev

Rails:为什么调用parent上的before_save?

来自分类Dev

为什么i.Parent.ReplaceWith(i)不抛出异常?

来自分类Dev

引导程序:为什么 div child 比 div parent 大?

来自分类Dev

PHP名称空间-为什么在声明Parent \ Child时必须“使用{Parent}”?

来自分类Dev

parent_path()带有或不带有斜杠

来自分类Dev

为什么我们要检查n.parent == null?

来自分类Dev

为什么我的根节点最终以acts_as_tree作为parent_id结束?

来自分类Dev

为什么我使用NDB的populate()不接受id或parent而是仅接受key?

来自分类Dev

为什么我的XML文件中的EditText宽度不能使用fill_parent?

来自分类Dev

为什么Bash为我的PATH中的程序给出“没有这样的文件或目录”?

来自分类Dev

为什么`posts_path`在`rails console`中不能工作?

来自分类Dev

使用 pathlib,父级的父级只返回第一个父级本身(parent.parent == parent)

来自分类Dev

File::deleteDirectory('path') 不会删除目录

来自分类Dev

jQuery中parent()和closest()的工作方式是什么?

来自分类Dev

为什么我的$ PATH比.bash_profile长得多

来自分类Dev

为什么我的sys.path太多了?

Related 相关文章

  1. 1

    PHP Get Relative Path from Parent to Included File

  2. 2

    为什么新的File(File parent,String childName)表现不明显?

  3. 3

    为什么新的File(File parent,String childName)表现不明显?

  4. 4

    为什么PATH ='$ PATH:/ Path / to / bin'覆盖我的PATH?

  5. 5

    为什么os.path.dirname(__ file__)在Django中工作?

  6. 6

    什么是 window.parent.parent

  7. 7

    为什么是File.expand_path(__ FILE__)?

  8. 8

    为什么在Windows中使用file.create在R中创建多个目录会导致Windows中的无效“ path”参数

  9. 9

    为什么在Windows中使用file.create在R中创建多个目录会导致Windows中的无效“ path”参数

  10. 10

    为什么无法识别我的PATH更改?

  11. 11

    当file_path是相对路径时,os.path.isfile(file_path)返回false,为什么?

  12. 12

    Rails:为什么调用parent上的before_save?

  13. 13

    为什么this.parent()没有定义为函数?

  14. 14

    Rails:为什么调用parent上的before_save?

  15. 15

    为什么i.Parent.ReplaceWith(i)不抛出异常?

  16. 16

    引导程序:为什么 div child 比 div parent 大?

  17. 17

    PHP名称空间-为什么在声明Parent \ Child时必须“使用{Parent}”?

  18. 18

    parent_path()带有或不带有斜杠

  19. 19

    为什么我们要检查n.parent == null?

  20. 20

    为什么我的根节点最终以acts_as_tree作为parent_id结束?

  21. 21

    为什么我使用NDB的populate()不接受id或parent而是仅接受key?

  22. 22

    为什么我的XML文件中的EditText宽度不能使用fill_parent?

  23. 23

    为什么Bash为我的PATH中的程序给出“没有这样的文件或目录”?

  24. 24

    为什么`posts_path`在`rails console`中不能工作?

  25. 25

    使用 pathlib,父级的父级只返回第一个父级本身(parent.parent == parent)

  26. 26

    File::deleteDirectory('path') 不会删除目录

  27. 27

    jQuery中parent()和closest()的工作方式是什么?

  28. 28

    为什么我的$ PATH比.bash_profile长得多

  29. 29

    为什么我的sys.path太多了?

热门标签

归档