MyTetra Share
Делитесь знаниями!
указатели
Время создания: 20.05.2017 21:23
Раздел: Python - files
Запись: xintrea/mytetra_db_mcold/master/base/1495304620aip5c873a0/text.html на raw.githubusercontent.com

## Работа с указателями в файле

### tell()

> tell () - возвращает позицию указателя относительно начала файла в виде целого чис­

ла. Обратите внимание на то, что в Windows метод tell () считает символ \r как допол­

нительный байт, хотя этот символ удаляется при открытии файла в текстовом режиме.

Пример:

```python

with open(r"file.txt", "w", encoding="cp1251") as f:

f. write ( "String1 \nString2")

15

f = open(r"file.txt", "r", encoding="cp1251")

f.tell() #Указатель расположен в начале файла

о

f.readline() #· Перемещаем указатель

'String1\n'

f.tell() #Возвращает 9 (8 + '\r'), а не 8 ! ! !

9

f. close ()

```

Чтобы избежать этого несоответствия, следует открывать файл в бинарном режиме, а не

в текстовом:

```python

f = open(r"file.txt", "rb")

f.readline() # Перемещаем указатель

b'Stringl\r\n'

f. tell () # Теперь значение соответствует

9

f.close()

```

### seek()

> seek (<СМещение> [, <Позиция>]) - устанавливает указатель в позицию, имеющую сме­

щение <Смещение> относительно позиции <Позиция>. В параметре <Поз~ция> могут быть

указаны следующие атрибуты из модуля io или соответствующие им значения:

• io.SEEK_SET илио-начало файла (значение по умолчанию);

• io. SEEK _ cuR или 1 -текущая позиция указателя;

• io. SEEK _ END или 2 - конец файла.

Выведем значения этих атрибутов:

```python

import io

io.SEEK_SET, io.SEEK_CUR, io.SEEK END

(0, 1, 2)

Пример использования метода seek ():

import io

f = open(r"file.txt", "rb")

f.seek(9, io.SEEK_CUR) # 9 байтов от указателя

f.tell()

9

f.seek(O, io.SEEK_SET) ~ Перемещаем указатель в начало

о

f. tell ()

о

f .seek(-9, io.SEEK_END) ~ -9 байтов от конца файла

7

f.tell()

7

f .close ()

```

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования