Python não lê o arquivo de texto inteiro

Estou com um problema que não vi ninguém no StackOverflow encontrar ou até no googl

Meu objetivo principal é poder substituir as ocorrências de uma sequência no arquivo por outra. Existe uma maneira de conseguir acessar todas as linhas do arquivo.

O problema é que, quando tento ler um arquivo de texto grande (1-2 gb) de texto, o python lê apenas um subconjunto del

Por exemplo, vou fazer um comando realmente simples, como:

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

E grava apenas os primeiros 382 mb do arquivo original. Alguém já encontrou esse problema anteriormente?

Tentei algumas soluções diferentes, como usar:

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

Mas tem o mesmo efeito. A leitura do arquivo em partes, como usar

f.read(10000)

Eu reduzi-o a ser provavelmente um problema de leitura e não de escrita, porque isso acontece simplesmente com a impressão de linhas. Eu sei que existem mais linhas. Quando o abro em um editor de texto completo como o Vim, posso ver qual deve ser a última linha e não é a última que o python imprim

lguém pode oferecer algum conselho ou algo para tenta

tualmente, estou usando uma versão de 32 bits do Windows XP com 3,25 gb de ram e executando o Python 2.7

* Solução de edição encontrada (obrigado Lattyware). Usando um Iterator

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

questionAnswers(6)

yourAnswerToTheQuestion