У меня есть несколько очень больших текстовых файлов, которые мне нужно обработать, самый большой из которых составляет около 60 ГБ.
Каждая строка содержит 54 символа в семи полях, и я хочу удалить последние три символа из каждого из первых трех полей — что должно уменьшить размер файла примерно на 20%.
Я новичок в Python, и у меня есть код, который будет делать то, что я хочу, со скоростью около 3,4 ГБ в час, но для того, чтобы это было стоящее упражнение, мне действительно нужно получать как минимум 10 ГБ/час — есть ли способ ускорить это? Этот код не может бросить вызов моему процессору, поэтому я делаю необоснованное предположение, что он ограничен скоростью чтения и записи на внутренний жесткий диск?
def ProcessLargeTextFile():
r = open("filepath", "r")
w = open("filepath", "w")
l = r.readline()
while l:
x = l.split(' ')[0]
y = l.split(' ')[1]
z = l.split(' ')[2]
w.write(l.replace(x,x[:-3]).replace(y,y[:-3]).replace(z,z[:-3]))
l = r.readline()
r.close()
w.close()
Любая помощь будет очень признательна. Я использую графический интерфейс IDLE Python в Windows 7 и имею 16 ГБ памяти. Возможно, другая ОС будет более эффективной?
Изменить: Вот фрагмент файла, который нужно обработать.
70700.642014 31207.277115 -0.054123 -1585 255 255 255
70512.301468 31227.990799 -0.255600 -1655 155 158 158
70515.727097 31223.828659 -0.066727 -1734 191 187 180
70566.756699 31217.065598 -0.205673 -1727 254 255 255
70566.695938 31218.030807 -0.047928 -1689 249 251 249
70536.117874 31227.837662 -0.033096 -1548 251 252 252
70536.773270 31212.970322 -0.115891 -1434 155 158 163
70533.530777 31215.270828 -0.154770 -1550 148 152 156
70533.555923 31215.341599 -0.138809 -1480 150 154 158