Метод read() файлового объекта по умолчанию читает все содержимое файла с начала до конца, то есть с нулевого индекса до индекса, соответствующего последнему символу файла. Дополнительно данный метод может принимать целочисленный аргумент, указывающий ему, сколько символов нужно прочитать из файла.

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

Текущую позицию внутри файла можно получить в любое время с помощью вызова метода файлового объекта tell(), который возвращает целочисленное значение, соответствующее порядковому номеру текущего символа текстового файла.

При работе с файловыми объектами в Python хорошей практикой является использование ключевого слова with для группировки в блок инструкций, работающих с файлом. Использование данного приема позволит вам, во-первых, убедиться в том, что файл корректно закрылся после выполнения с ним операций, даже если возникли исключения, а, во-вторых, синтаксис будет гораздо короче, чем при использовании аналогичных блоков try-except.

string = "Строка для записи в файл"+"\nВторая строка для записи в файл"
with open('example.txt', 'w') as file:
  file.write(string)
  print('Файл не закрыт?:' , file.closed) #Файл не закрыт?: False
print('Файл не закрыт?:', file.closed) #Файл не закрыт?: True
with open('example.txt', 'r+') as file:
    string = file.read()
    print('Строка:', string) #Строка: Строка для записи в файл\nВторая строка для записи в файл
    print('Позиция в файле теперь:', file.tell()) #Позиция в файле теперь: 57
    position = file.seek(15)
    print('Позиция в файле теперь:', file.tell()) #Позиция в файле теперь: 15
    file.write('1111')
    file.seek(57)
    file.write('2222')
    file.seek(0)
    string = file.read()
    print('Строка:', string)
    '''
    Строка: Строка для запи1111 файл
    Вторая строка для записи в файл2222
    '''

Метод seek() способен принимать второй необязательный аргумент, значениями которого могут являться 0,1 или 2, указывающие, откуда производить отсчет символов — от начала, от текущего символа либо от конца текста соответственно. Ноль является значением по умолчанию.