如何阻止 pathlib.Path().stat() 解析符号链接?
How to stop pathlib.Path().stat() from resolving a symlink?
我想测试我拥有的文件的修改时间:
$ /tmp/bla -> bla.1 # was linked once
$ /tmp/bla.1 # was modified after the link
现在,如果我 运行 shell 命令 stat bla
,我得到一次,stat bla.1
会给我稍后的时间(因为 link 确实创建了一次,但之后修改了目的地)
从 python 执行时,returns link 和目的地的值相同,因为出于某种原因,它解析 link:
In [1]: from pathlib import Path
In [2]: Path("bla").stat().st_mtime == Path("bla.1").stat().st_mtime
Out[2]: True
这显然是错误的:
$ stat bla | grep "^Mod"
Modify: 2022-04-25 19:37:23.697182669 +0300
$ stat bla.1 | grep "^Mod"
Modify: 2022-04-25 19:37:59.437309050 +0300
pathlib.Path.stat
表示:
Return the result of the stat() system call on this path, like
os.stat() does.
但这对我没有帮助,因为它还解决了 link。这怎么能解决? (与 os.stat
相同的问题)
Python3.6.9
就像此方法的文档已经告诉您的那样,如果您不想解析符号链接,请使用 lstat
。
我想测试我拥有的文件的修改时间:
$ /tmp/bla -> bla.1 # was linked once
$ /tmp/bla.1 # was modified after the link
现在,如果我 运行 shell 命令 stat bla
,我得到一次,stat bla.1
会给我稍后的时间(因为 link 确实创建了一次,但之后修改了目的地)
从 python 执行时,returns link 和目的地的值相同,因为出于某种原因,它解析 link:
In [1]: from pathlib import Path
In [2]: Path("bla").stat().st_mtime == Path("bla.1").stat().st_mtime
Out[2]: True
这显然是错误的:
$ stat bla | grep "^Mod"
Modify: 2022-04-25 19:37:23.697182669 +0300
$ stat bla.1 | grep "^Mod"
Modify: 2022-04-25 19:37:59.437309050 +0300
pathlib.Path.stat
表示:
Return the result of the stat() system call on this path, like os.stat() does.
但这对我没有帮助,因为它还解决了 link。这怎么能解决? (与 os.stat
相同的问题)
Python3.6.9
就像此方法的文档已经告诉您的那样,如果您不想解析符号链接,请使用 lstat
。