Назад к вопросам
Junior
68
questionbank

Что делают методы `tell` и `seek` в Python?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Метод tell() возвращает текущую позицию указателя файла в байтах. Метод seek(offset, origin) перемещает указатель файла на заданное смещение.

Параметры метода seek():

  • offset: Количество байт для перемещения.
  • origin: Точка отсчета для смещения. Возможные значения:
    • 0 (или io.SEEK_SET): Начало файла (по умолчанию).
    • 1 (или io.SEEK_CUR): Текущая позиция указателя файла.
    • 2 (или io.SEEK_END): Конец файла.

Пример использования:

# Создаем файл для примера
with open("example.txt", "w") as f:
    f.write("Hello, world!")

# Открываем файл для чтения
with open("example.txt", "r") as f:
    # Текущая позиция - начало файла (0)
    print(f.tell()) # Выведет 0

    # Считываем 5 символов
    content = f.read(5)
    print(content) # Выведет Hello

    # Текущая позиция после чтения (5 байт)
    print(f.tell()) # Выведет 5

    # Переходим на 3 байта от начала файла
    f.seek(3, 0)
    print(f.tell()) # Выведет 3

    # Считываем оставшуюся часть
    content = f.read()
    print(content) # Выведет lo, world!

    # Текущая позиция - конец файла
    print(f.tell()) # Выведет 13

    # Переходим на 5 байт назад от конца файла
    f.seek(-5, 2)
    print(f.tell()) # Выведет 8

    # Считываем
    content = f.read()
    print(content) # Выведет world!

Важно: В текстовом режиме ('r', 'w', 'a') seek() и tell() могут работать некорректно с некодированными данными или при использовании специальных символов. Рекомендуется использовать двоичный режим ('rb', 'wb', 'ab') для точного позиционирования.