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