posix 风格文件系统中的每个目录从一开始就具有两个文件:..
,它指的是父目录, 和.
,它指的是当前目录:
$ mkdir tmp; cd tmp
tmp$ ls -a
. ..
tmp$ cd .
tmp$ # <-- still in the same directory
- 除了/..
,它指的是根本身,因为根没有父级。
Path
来自 python 的对象在创建pathlib
时只是一个围绕一个字符串的包装器,该字符串假定指向文件系统的某个位置。它只会在解决时指代有形的东西:
>>> Path('.')
PosixPath('.') # just a fancy string
>>> Path('.').resolve()
PosixPath('/current/working/dir') # an actual point in your filesystem
底线是
- 从文件系统的角度来看,路径
/current/working/dir
和是完全等效的,并且/current/working/dir/.
- a
pathlib.Path
也将在解决后立即反映出来。
通过匹配对 的glob
调用.
,您发现所有指向初始目录下的当前目录的链接。结果glob
在返回时得到解决,因此.
不再出现在那里。
作为此行为的来源,请参阅PEP428 的这一部分(用作 的规范pathlib
),其中简要提到了路径等效性。