python中os.stat和os.fstat的inode号的区别

Difference between inode numbers of os.stat and os.fstat in python

我想在我的 windows 机器中获取文件的索引节点,所以我首先尝试了 os.stat('./filename.txt').st_ino 在我的 REPL 中,我得到的输出是 0L

我对其他几个文件进行了相同的尝试并得到了相同的输出。

然后,我尝试了 os.fstat(open("filename.txt", "r").fileno()).st_ino 并且我在输出中得到了一个长整数。对于不同的文件,整数会发生变化。所以,我认为 os.fstat 为 windows 工作,而 os.stat 没有。有人可以向我解释这种行为的原因以及两者之间的其他差异吗?

在 Python 2 on Windows 中,stat 调用 GetFileAttributesExFindFirstFile 以获取标准文件信息,包括文件属性(例如目录、只读)、大小和时间戳。 fstat 调用 GetFileType(即字符、管道、磁盘)和 GetFileInformationByHandle,它提供标准信息和文件索引号(在某些方面类似于索引节点,但实际上不是),编号硬链接和卷序列号(未使用)。

Python 2 离生命终结还有一年。我建议您升级到 Python 3,它改进了 Windows 的 stat 实现,并进一步改进了开发