Given a filename and an integer
How to read the first
n lines of the file in your Python script?
Here’s an overview of the solutions:
Method 1: Store Head in a List of Strings
- The expression
next(file)gets the next line of the file.
- The context
for x in range(n)repeats this
Here’s a code script in a file
'code.py' that reads the first
n=4 lines of itself:
n = 4 filename = 'code.py' with open(filename) as my_file: head = [next(my_file) for x in range(n)] print(head)
The output is:
['n = 4\n', "filename = 'code.py'\n", '\n', 'with open(filename) as my_file:\n']
Method 2: Store Head in a String
You can also store the first n lines of a file in a single string using the following idea:
- Create an empty string variable
head = ''
- Open the file with
ntimes using a for loop
- Appending the next line in the file to the end of the string head using string concatenation.
Here’s the specific code:
n = 4 filename = 'code.py' head = '' with open(filename) as my_file: for x in range(n): head += next(my_file) print(head)
print() function gives the following output:
n = 4 filename = 'code.py' head = ''
Method 3: Slicing and readlines()
If performance is not an issue for you, you can read the whole file using the
readlines() function and then use slicing to access only the first
n lines. For example,
file.readlines()[:n] would return a list of the
n first lines in the
n = 4 filename = 'code.py' with open(filename) as file: head = file.readlines()[:n] print(head)
The output of this code snippet is:
['n = 4\n', "filename = 'code.py'\n", '\n', 'with open(filename) as file:\n']
This is not a very performant way to read the head of a file because you first read the whole file before throwing away everything but the first
n lines. Thus, you should only use it if the files are relatively small and you don’t care too much about performance.
Method 4: Pandas
A simple and straightforward solution that doesn’t require explicit file I/O is provided by the pandas library. To read the first
n lines of a file, you can use the pandas call
For example, to read the first five lines of the file
'file.csv', the following two-liner will do:
import pandas as pd head = pd.read_csv('file.csv', nrows=5)
Where to Go From Here?
Enough theory, let’s get some practice!
To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?
Practice projects is how you sharpen your saw in coding!
Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?
Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.
Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.
While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com. He’s author of the popular programming book Python One-Liners (NoStarch 2020), coauthor of the Coffee Break Python series of self-published books, computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.