Вы можете выполнить подпроцесс и запустить wc -l filename
import subprocess
def file_len(fname):
p = subprocess.Popen(['wc', '-l', fname], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
result, err = p.communicate()
if p.returncode != 0:
raise IOError(err)
return int(result.strip().split()[0])
Сегодня я понял, в чем проблема. Я тестировал эти коды в редакторе и в процессе разработки для некоторой отладки. Когда я собрал его для Windows должным образом, чтение было намного быстрее, и все строки были прочитаны примерно за 30 секунд.