размер объекта файла python и seek ()

1

Я создал файл со следующей записью, возвращенной file.read()

'ABCD\nefgh\N1234\nijkl\n5678\п\Nend'

Теперь я открываю файл для чтения с помощью "f" в качестве обработчика. f.read() возвращает вышеизложенное. f.tell() возвращает 35L sys.getsizeof(f) возвращает 76. Попытка позвонить f.seek(offset) со смещением, превышающим 35, ничего не возвращает.

Документация Python говорит, что file.seek() перемещается в байтах. так что существует несоответствие между тем, что возвращается sys.getsizeof() и f.tell()/seek()?

Теги:
file
sys

3 ответа

3
Лучший ответ

sys.getsizeof() не возвращает размер файла на диске. Вместо этого он возвращает размер, который в памяти занимает файл файл (интерфейс к реальному файлу на диске).

Вы даже можете использовать sys.getsizeof() с объектами, у которых нет присутствия на диске. Для instacen, если s = 'abcd', вызов sys.getsizeof(s) может возвратиться (в зависимости от вашей реализации) 25, хотя s является строкой, и на нем нет свободного места на диске.

7

sys.getsizeof возвращает размер объекта (т.е. сколько байтов a file экземпляр класса занимает в памяти) и не имеет ничего общего с размером содержимого файла.

4
# size of the file in bytes
size = os.path.getsize(pathname)
# another way
f = file(pathname)
size = os.fstat(f.fileno()).st_size

Ссылки

Ещё вопросы

Сообщество Overcoder
Наверх
Меню