Перемещает указатель чтения/записи в файле.
Синтаксис:
file.seek(offset[, whence])
Параметры:
file
- объект файлаoffset
- int
байтов, смещение указателя чтения/записи файла.whence
- int
, абсолютное позиционирование указателя.
Возвращаемое значение:
Описание:
Метод файла
file.seek()
устанавливает текущую позицию в байтах
offset
для указателя чтения/записи в файле
file
.
Аргумент whence
является необязательным и по умолчанию равен 0
. Может принимать другие значения:
0
- означает, что нужно сместить указатель на offset
относительно начала файла.1
- означает, что нужно сместить указатель на offset
относительно текущей позиции.2
- означает, что нужно сместить указатель на offset
относительно конца файла.
Обратите внимание:
- Если файл открыт для добавления с помощью
'a'
или 'a+'
, все операции file.seek()
будут отменены при следующей записи. - Если файл открыт только для записи в режиме добавления с использованием
'a'
, Этот метод по существу используется, но он остается полезным для файлов, открытых в режиме добавления с включенным чтением - режим 'a+'
. - Если файл открыт в текстовом режиме с помощью
't'
, то допустимы только смещения, возвращаемые функцией file.tell()
. Использование других смещений вызывает неопределенное поведение.
Обратите внимание, что не все объекты файлов доступны для метода file.seek()
. В текстовых файлах разрешены только запросы относительно начала файла, исключение составляет смещение указателя до самого конца файла с помощью txt_file.seek(0, 2)
.
Примеры перемещения указателя в файле для чтения/записи.
>>> text = b'This is 1st line\nThis is 2nd line\nThis is 3rd line\n'
>>> fp = open('foo.txt', 'bw+')
>>> fp.write(text)
# 51
>>> fp.seek(20, 0)
# 20
>>> fp.read(10)
# b's is 2nd l'
>>> fp.seek(10, 1)
# 40
>>> fp.read(10)
# b's 3rd line'
>>> fp.seek(-11, 2)
# 40
>>> fp.read(10)
# b's 3rd line'
>>> fp.close()