Разница между номерами инодов 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 и дальнейшие улучшения в разработке

Другие вопросы по тегам