Разница между номерами инодов os.stat и os.fstat в python
Я хотел получить inode файла в моей машине с Windows, поэтому сначала я попытался os.stat('./filename.txt').st_ino
в моем REPL и вывод, который я получил, был 0L
,
Я попробовал то же самое для пары других файлов и получил тот же вывод.
Затем я попробовалos.fstat(open("filename.txt", "r").fileno()).st_ino
и я получил длинное целое число в выводе. Для разных файлов целое число менялось. Итак, я думаю, что os.fstat работал для Windows, а os.stat - нет. Может кто-нибудь объяснить мне причину такого поведения и другие различия между ними?
1 ответ
В Python 2 на Windows, stat
звонки GetFileAttributesEx
или же FindFirstFile
чтобы получить стандартную информацию о файле, включая атрибуты файла (например, каталог, только для чтения), размер и временные метки. fstat
звонки GetFileType
(т.е. персонаж, труба, диск) и GetFileInformationByHandle
, который предоставляет стандартную информацию плюс индексный номер файла (в некотором смысле, как inode, но не совсем), количество жестких ссылок и серийный номер тома (не используется).
Python 2 - это год от конца жизни. Я предлагаю вам обновить до Python 3, который имеет улучшенную stat
реализация для Windows и дальнейшие улучшения в разработке