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
调用 GetFileAttributesEx
或 FindFirstFile
以获取标准文件信息,包括文件属性(例如目录、只读)、大小和时间戳。 fstat
调用 GetFileType
(即字符、管道、磁盘)和 GetFileInformationByHandle
,它提供标准信息和文件索引号(在某些方面类似于索引节点,但实际上不是),编号硬链接和卷序列号(未使用)。
Python 2 离生命终结还有一年。我建议您升级到 Python 3,它改进了 Windows 的 stat
实现,并进一步改进了开发
我想在我的 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
调用 GetFileAttributesEx
或 FindFirstFile
以获取标准文件信息,包括文件属性(例如目录、只读)、大小和时间戳。 fstat
调用 GetFileType
(即字符、管道、磁盘)和 GetFileInformationByHandle
,它提供标准信息和文件索引号(在某些方面类似于索引节点,但实际上不是),编号硬链接和卷序列号(未使用)。
Python 2 离生命终结还有一年。我建议您升级到 Python 3,它改进了 Windows 的 stat
实现,并进一步改进了开发