gpt4 book ai didi

python - 如何在没有系统特定的情况下获得 pathlib 的 unix 路径处理好东西,例如 Path.resolve() changes/tmp to/private/tmp

转载 作者:行者123 更新时间:2023-11-28 21:32:08 25 4
gpt4 key购买 nike

遇到一个有趣的 pathlib 案例,我用它来表示 android 设备上的路径,而不是 python 正在运行的机器。是否仍然可以利用 pathlib 的含糖语法和解决 unix 范围内的老生常谈的能力,例如相对路径“../../”而不解决设备特定的符号链接(symbolic link),例如“/tmp/path”->“/private/tmp/路径”?

在大多数情况下,pathlib 使处理设备上的路径变得非常容易,但是当我想在不使用主机 python 机器的符号链接(symbolic link)解析机制的情况下解析设备上的路径时遇到了问题。

我喜欢使用 pathlib 而不是字符串。是否可以使用 Path 对象进行路径操作和操作,然后将最终文件命令发送到 ssh 进入的设备?

我唯一想要的 resolve 是能够转 (Path(“/tmp/analysis/ptool”)/“../../“).resolve 照顾 .. 但不改变/tmp 到/private/tmp,这不是我要使用此路径命令的设备上的符号链接(symbolic link)。

这个例子有点微不足道“只用字符串来做”,但我想应用它的组织和自动化明显更清晰,更容易阅读为 Path 对象而不是字符串。如果可能的话,让它发挥作用就太好了。

In [1]: import pathlib

In [2]: from pathlib import Path

In [3]: Path('/tmp/hello').resolve()
Out[3]: PosixPath('/private/tmp/hello')

enter image description here

MacOS, Python3.7.3

最佳答案

/private/tmp/tmp 内容实际存储在 Mac OS 上的地方。在这个平台上,/tmp 是一个符号链接(symbolic link)。您可以从操作系统中看到这一点,而无需使用 Python:

$ ls -l /tmp
lrwxr-xr-x 1 root wheel 11 Oct 22 2018 /tmp -> private/tmp
$ (cd /tmp && pwd -P)
/private/tmp

pathlib.Path.resolve()用符号链接(symbolic link)指向的绝对路径替换符号链接(symbolic link),因此它完全符合您的要求。

参见 Why is /tmp a symlink to /private/tmp?在我们的姊妹网站上 Ask Different .

关于python - 如何在没有系统特定的情况下获得 pathlib 的 unix 路径处理好东西,例如 Path.resolve() changes/tmp to/private/tmp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57014815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com