Как я могу прочитать несколько строк в файле быстрее, используя Python?
На данный момент я использую следующий код Python:
file = open(filePath, "r")
lines=file.readlines()
file.close()
Скажем, мой файл состоит из нескольких строк (10000 или более), тогда моя программа замедляется, если я делаю это для более чем одного файла. Есть ли способ ускорить это в Python? Читая различные ссылки, я понимаю, что readlines хранит строки файла в памяти, поэтому код работает медленно.
Я также попробовал следующий код, и выигрыш времени составил 17%.
lines=[line for line in open(filePath,"r")]
Есть ли какой-нибудь другой модуль в python2.4 (который я мог пропустить). Спасибо, Сандхья
1 ответ
for line in file:
Это дает вам итератор, который читает объект файла по одной строке за раз, а затем отбрасывает предыдущую строку из памяти.
Файловый объект является его собственным итератором, например, iter (f) возвращает f (если f не закрыт). Когда файл используется в качестве итератора, как правило, в цикле for (например, для строки в f: print line), метод next() вызывается повторно. Этот метод возвращает следующую строку ввода или вызывает StopIteration при нажатии EOF. Чтобы сделать цикл for наиболее эффективным способом зацикливания строк файла (очень распространенная операция), метод next() использует скрытый буфер опережающего чтения. Как следствие использования буфера упреждающего чтения, объединение next() с другими файловыми методами (например, readline ()) работает неправильно. Однако использование seek () для позиционирования файла в абсолютную позицию очистит буфер опережающего чтения. Новое в версии 2.3.
Краткий ответ: не назначайте строки переменной, просто выполняйте все необходимые операции внутри цикла.