简体   繁体   English

系统中不存在的 Python `pathlib` 分辨率中的奇怪路径

[英]Weird Path in Python `pathlib` resolution that doesn't exist in system

I'll jump in medias res to the code:我将在媒体资源中跳转到代码:

from pathlib import Path
import os
p = Path(os.getenv("APPDATA")).joinpath(r"Microsoft\WindowsApps")

p.resolve()  # gives 'C:/Users/Alex/AppData/Local/Packages/PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0/LocalCache/Roaming/Microsoft/WindowsApps' 

Why is this happening?为什么会这样? The system says that there is no such path p , I check hidden files, not even a symbolic link.系统说没有这样的路径p ,我检查隐藏文件,连符号链接都没有。 Why is it resolved to that path?为什么要解决那条路?

Path.resolve() just makes the path an absolute path, if you want to also check if the resolved path is an existing path you need to set Path.resolve(strict=True) or a call .exists() on the resolved path. Path.resolve()只是使路径成为绝对路径,如果您还想检查解析路径是否为现有路径,则需要设置Path.resolve(strict=True)或在解析路径上调用.exists() .

https://docs.python.org/3/library/pathlib.html#pathlib.Path.resolve https://docs.python.org/3/library/pathlib.html#pathlib.Path.resolve

E:乙:

Tested this on my machine in blocks and seems to working as expected:在我的机器上按块测试这个并且似乎按预期工作:

from pathlib import Path
import os

p = Path(os.getenv("APPDATA"))
print(p)
p = p.joinpath(r"Microsoft\WindowsApps")
print(p)
p = p.resolve()
print(p)
p = p.joinpath("..")
print(p)
p = p.resolve()
print(p)

Output: Output:

C:\Users\tzane\AppData\Roaming
C:\Users\tzane\AppData\Roaming\Microsoft\WindowsApps
C:\Users\tzane\AppData\Roaming\Microsoft\WindowsApps
C:\Users\tzane\AppData\Roaming\Microsoft\WindowsApps\..
C:\Users\tzane\AppData\Roaming\Microsoft

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM