@ Констатин предполагает, что если вы будете удовлетворены заменой
'<><><><><><><>\n'
на
'" \n'
тогда строка замены будет той же длины, и в этом случае вы можете создать решение для редактирования на месте с помощью
mmap
. Вам понадобится Python 2.6. Важно, чтобы файл открывался в правильном режиме!
import mmap, os
CHUNK = 2**20
oldStr = ''
newStr = '" '
strLen = len(oldStr)
assert strLen==len(newStr)
f = open("myfilename", "r+")
size = os.fstat(f.fileno()).st_size
for offset in range(0,size,CHUNK):
map = mmap.mmap(f.fileno(),
length=min(CHUNK+strLen,size-offset), # not beyond EOF
offset=offset)
index = 0 # start at beginning
while 1:
index = map.find(oldStr,index) # find next match
if index == -1: # no more matches in this map
break
map[index:index+strLen] = newStr
f.close()
Этот код не отлажен! Он работает для меня в тестовом случае 3 МБ, но он может не работать на большом (> 2 ГБ) файле - модуль mmap
все еще кажется немного незрелым, поэтому я бы не стал полагаться на него слишком много.
Глядя на более широкую картину, из того, что вы опубликовали, не ясно, что ваш файл окажется действительным CSV. Также имейте в виду, что инструмент, который вы планируете использовать для фактической обработки CSV, может быть достаточно гибким для работы с файлом в его текущем состоянии.