В настоящее время я использую C++-скрипт с оболочкой Python для управления строчным текстовым файлом (15 ГБ). Фактически, что он делает, он читает строку из input.txt, обрабатывает ее, выводит результат на output.txt. Я использую цикл straigtforward здесь (вх быть открыт как input.txt, из открываемой в output.txt):Как эффективно пропустить первые n строк в файле с помощью python?
for line in inp:
result = operate(line)
out.write(result)
Однако из-за проблем в C++ Script, он имеет некоторую интенсивность отказов, которая приводит к тому чтобы закрыть после десяти миллионов итераций. Это оставляет мне выходной файл, сделанный с использованием только 10% ввода.
Поскольку у меня нет средств для исправления исходного сценария, я думал о том, чтобы просто перезапустить его там, где он остановился. Я считал линии output.txt, сделал еще называют output2.txt, и начал следующий код:
k = 0
for line in inp:
if k < 12123253:
k + = 1
else:
result = operate(line)
out2.write(result)
k + = 1
Однако, по сравнению с тем, когда я подсчета линий, которые заканчивались менее чем за минуту, этот метод занимает много времени часов, чтобы добраться до назначенной линии.
Почему этот метод неэффективен? Есть ли более быстрый? Я на ПК с высокой вычислительной способностью (оперативная память 72 ГБ, хорошие процессоры) и с использованием python 2.7.
Я думаю, что скажите (чтобы записать, где вы были) и ищите (чтобы вернуться к этому моменту в вашем следующем прогоне), вероятно, могли бы помочь вам. http://stackoverflow.com/questions/3299213/python-how-can-i-open-a-file-and-specify-the-offset-in-bytes –