Что касается меня, этот вариант будет самым быстрым:
#!/usr/bin/env python
def main():
f = open('filename')
lines = 0
buf_size = 1024 * 1024
read_f = f.read # loop optimization
buf = read_f(buf_size)
while buf:
lines += buf.count('\n')
buf = read_f(buf_size)
print lines
if __name__ == '__main__':
main()
причинам: буферизация выполняется быстрее, чем чтение по строкам, а string.count
также очень быстро