Каков механизм поиска файла python? - PullRequest
0 голосов
/ 27 июня 2018
f = open('somefile')
f.seek(0, 2)
f.tell()

Над кодом будет

 1. open a pointer point to a file
 2. move the pointer from file start to end
 3. return the bytes that the pointer moved 

Вопрос 1:

Поскольку указатель будет перемещаться от начала до конца файла, означает ли это, что ОС должна загружать файл с диска в память?

Вопрос 2:

Поскольку указатель будет перемещаться от начала и до конца файла, будет ли время, потраченное на шаге 2, напрямую связано с размером файла?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Для файловых систем с произвольным доступом «текущая позиция» («указатель», который вы изменяете при поиске) - это простая целочисленная переменная без знака, которая обычно содержит только смещение (в байтах) от начала файла.

Когда вы ищете, это смещение изменяется (добавляется или вычитается из, или устанавливается в абсолютное значение).

Поиск в конце - это просто установка смещения на размер файла.

0 голосов
/ 27 июня 2018

Поскольку указатель будет перемещаться от начала к концу файла, означает ли это, что ОС должна загружать файл с диска в память?

Нет. Текущие реализации файловой системы не последовательны, они позволяют случайный поиск по файлу.

Поскольку указатель будет перемещаться от начала до конца файла, будет ли время, потраченное на шаг 2, напрямую связано с размером файла?

Нет. На самом деле физический указатель не перемещается, это просто переменная в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...