0

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

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

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

4

1 回答 1

1

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

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

于 2019-01-10T12:22:44.737 回答