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!
Coders get paid six figures and more because they can solve problems more effectively using machine intelligence and automation.
To become more successful in coding, solve more real problems for real people. 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?
You build high-value coding skills by working on practical coding projects!
Do you want to stop learning with toy projects and focus on practical code projects that earn you money and solve real problems for people?
🚀 If your answer is YES!, consider becoming 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.
If you just want to learn about the freelancing opportunity, feel free to watch my free webinar “How to Build Your High-Income Skill Python” and learn 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.