Python file.tell дает неверное значение местоположения

Я пытаюсь извлечь несколько мест из существующего файла, используя Python. Это мой текущий код для извлечения локаций:

    self.fh = open( fileName , "r+")
    p = re.compile('regGen regPorSnip begin')
    for line in self.fh :
        if ( p.search(line) ):
            self.porSnipStartFPtr = self.fh.tell()
            sys.stdout.write("found regPorSnip")

Этот фрагмент повторяется несколько раз (за исключением открытия файла) с различными значениями поиска, и, похоже, работает: я получаю правильные сообщения, а переменные имеют значения.

Однако, используя приведенный ниже код, первое местоположение записи неверно, в то время как последующие места записи правильны:

    self.fh.seek(self.rstSnipStartFPtr,0)
    self.fh.write(str);
    sys.stdout.write("writing %s" % str )
    self.rstSnipStartFPtr = self.fh.tell()

Я прочитал, что прохождение определенно /readreadline вариантыfh может вызвать ошибочное значение Tell из-за Python 'склонность кчитать вперед, Одно из предложений, которое я видел, чтобы избежать этого, - прочитать весь файл и переписать его, что не так.Это очень привлекательное решение в моем приложении.

Если я изменю первый фрагмент кода на:

  for line in self.fh.read() :
        if ( p.search(line) ):
            self.porSnipStartFPtr = self.fh.tell()
            sys.stdout.write("found regPorSnip")

Тогда кажется, чтоself.fh.read() возвращает только символы, а не всю строку. Поиск никогда не совпадает. То же самое относится и к.self.fh.readline()

Мой вывод таков, чтоfh.tell возвращает только допустимые местоположения файлов, когда запрашивается после операции записи.

Есть ли способ извлечь точное местоположение файла при чтении / поиске?

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос