Обрабатывать очень большой (> 20 ГБ) текстовый файл построчно
У меня есть несколько очень больших текстовых файлов, которые мне нужно обработать, самый большой из которых - около 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 GUI в 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