почему у '/' есть индекс inode номер 2? [Дубликат]

Индекс DataFrame.ix - это то, к чему вы хотите получить доступ. Это немного запутанно (я согласен с тем, что индексирование Pandas иногда вызывает недоумение!), Но следующее, похоже, делает то, что вы хотите:

>>> df = DataFrame(np.random.rand(4,5), columns = list('abcde'))
>>> df.ix[:,'b':]
      b         c         d         e
0  0.418762  0.042369  0.869203  0.972314
1  0.991058  0.510228  0.594784  0.534366
2  0.407472  0.259811  0.396664  0.894202
3  0.726168  0.139531  0.324932  0.906575

где .ix [срез строки, срез столбца] - это то, что интерпретируется. Подробнее о индексе Pandas здесь: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-advanced

Примечание: .ix был устарел с момента выпуска Pandas v0.20. Вместо этого вы должны использовать .loc или .iloc, если это необходимо.

18
задан manav m-n 20 January 2010 в 05:53
поделиться

4 ответа

Обычно индекс inode 0 зарезервирован, потому что возвращаемое значение 0 обычно сигнализирует об ошибке. Множественный метод в ядре Linux - особенно в слое VFS, который используется всеми файловыми системами - возвращает ino_t, например. find_inode_number .

Есть более зарезервированные номера inode. Например, в ext2 :

#define EXT2_BAD_INO             1      /* Bad blocks inode */
#define EXT2_ROOT_INO            2      /* Root inode */
#define EXT2_BOOT_LOADER_INO     5      /* Boot loader inode */
#define EXT2_UNDEL_DIR_INO       6      /* Undelete directory inode */

и ext3 имеет:

#define EXT3_BAD_INO             1      /* Bad blocks inode */
#define EXT3_ROOT_INO            2      /* Root inode */
#define EXT3_BOOT_LOADER_INO     5      /* Boot loader inode */
#define EXT3_UNDEL_DIR_INO       6      /* Undelete directory inode */
#define EXT3_RESIZE_INO          7      /* Reserved group descriptors inode */
#define EXT3_JOURNAL_INO         8      /* Journal inode */

и ext4 имеет:

#define EXT4_BAD_INO             1      /* Bad blocks inode */
#define EXT4_ROOT_INO            2      /* Root inode */
#define EXT4_USR_QUOTA_INO       3      /* User quota inode */
#define EXT4_GRP_QUOTA_INO       4      /* Group quota inode */
#define EXT4_BOOT_LOADER_INO     5      /* Boot loader inode */
#define EXT4_UNDEL_DIR_INO       6      /* Undelete directory inode */
#define EXT4_RESIZE_INO          7      /* Reserved group descriptors inode */
#define EXT4_JOURNAL_INO         8      /* Journal inode */

Другие файловые системы используют ino 1 как номер inode для root. В общем случае файловая система может свободно выбирать свои номера inode и зарезервированные значения ino (за исключением 0).

23
ответ дан Steve 21 August 2018 в 14:33
поделиться

Когда я писал файловую систему несколько веков назад, я использовал inode 0 для псевдофайла .badblocks.

В некоторых файловых системах .badblocks фактически присутствует в корневом каталоге как обычный файл, принадлежащий root и mode 0. root может открыть его, но чтение или запись не определено.

Существует некоторая древняя традиция, что inodes начинаются с 1, # 1 - .badblocks, а # 2 - корневой каталог. Несмотря на то, что .badblocks не особенно хорошо гарантирован, многие файловые системы уходят с пути, чтобы сделать root # 2.

0
ответ дан Joshua 21 August 2018 в 14:33
поделиться

0 используется как контрольное значение для указания нулевого или отсутствующего индексного дескриптора. аналогично тому, как указатели могут быть NULL в C. без дозорного, вам нужен дополнительный бит, чтобы проверить, был ли установлен индекс inode в структуре.

подробнее здесь:

< blockquote>

Все адреса блоков и индексов начинаются с 1. Первый блок на диске - это блок 1. 0 используется для указания отсутствия блока. (Редкие файлы могут иметь их внутри них)

http://uranus.chrysocome.net/explore2fs/es2fs.htm

для Например, в старых файловых системах, где каталоги были представлены как фиксированный массив записей в файлах, удаление файла приведет к тому, что значение индекса inode val будет равным 0. При перемещении каталога любая запись с индексом 0 будет проигнорирована.

24
ответ дан jspcal 21 August 2018 в 14:33
поделиться
  • 1
    Кажется, что inode 1 также зарезервирован вместе с inode 0 для некоторых специальных целей. – manav m-n 20 January 2010 в 06:17
  • 2
    Это похоже на ext2fs. Ваш вопрос касается файловых систем в целом. – Alok Singhal 20 January 2010 в 06:20
  • 3
    @Alok: семейство unix fs делится концепцией inode. никто не признает 0 по соглашению. – jspcal 20 January 2010 в 06:31
  • 4
    За исключением NTFS: $ MFT является inode 0, в результате чего он не отображается в списке каталогов, даже если он физически присутствует в корневом каталоге. – Joshua 29 July 2010 в 18:49
3
ответ дан Justin Cormack 21 August 2018 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: