Python – How to get line count of a large file cheaply in Python

line-countpythontext-files

I need to get a line count of a large file (hundreds of thousands of lines) in python. What is the most efficient way both memory- and time-wise?

At the moment I do:

def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

is it possible to do any better?

Best Solution

One line, probably pretty fast:

num_lines = sum(1 for line in open('myfile.txt'))