Python не читает весь текстовый файл

Я сталкиваюсь с проблемой, которую я никогда не видел на встрече StackOverflow или даже Google в этом отношении.

Моя главная цель - иметь возможность заменить вхождения строки в файле другой строкой. Есть ли способ, чтобы иметь возможность иметь доступ ко всем строкам в файле.

Проблема в том, что когда я пытаюсь прочитать большой текстовый файл (1-2 ГБ) текста, python читает только его часть.

Например, я сделаю действительно простую команду, такую как:

newfile = open("newfile.txt","w")
f = open("filename.txt","r")
for line in f:
    replaced = line.replace("string1", "string2")
    newfile.write(replaced)

И это только пишет первые 382 МБ исходного файла. Кто-нибудь сталкивался с этой проблемой ранее?

Я пробовал несколько разных решений, таких как:

import fileinput
for i, line in enumerate(fileinput.input("filename.txt", inplace=1)
   sys.stdout.write(line.replace("string1", "string2")

Но это имеет тот же эффект. Также не чтение файла в кусках, таких как использование

f.read(10000)

Я сузил его до того, что, скорее всего, это проблема чтения, а не проблемы записи, потому что это происходит просто для распечатки строк. Я знаю, что есть еще строки. Когда я открываю его в полнотекстовом редакторе, таком как Vim, я вижу, какой должна быть последняя строка, и это не последняя строка, которую печатает python.

Может ли кто-нибудь предложить какой-либо совет или вещи, чтобы попробовать?

В настоящее время я использую 32-разрядную версию Windows XP с 3,25 ГБ ОЗУ и запускаю Python 2.7

* Редактировать найденное решение (спасибо Lattyware). Использование итератора

def read_in_chunks(file, chunk_size=1000): 
   while True: 
      data = file.read(chunk_size) 
      if not data: break 
      yield data

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

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