Welcome back to 100 Days, 100 Python Topics! Yesterday, we explored file modes and error handling. Today, we’ll focus on CSV files — a very common format for storing tabular data. Whether you’re dealing with spreadsheets, datasets, or exporting data from an app, Python’s csv module makes working with CSV files a breeze.
1. What is a CSV File?
A CSV (Comma-Separated Values) file is a plain text file where each line represents a row of data, and each value in the row is separated by a comma (or sometimes other delimiters like ; or \t).
Example:
Name,Age,Country
John,25,USA
Emma,30,UK
Liam,28,Canada
2. Reading CSV Files
Python provides the built-in csv module to read CSV files easily.
import csv
# Reading a CSV file
with open('data.csv', mode='r') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)
Notes:
- 
csv.reader()returns each row as a list of strings.
- The first row often contains headers, which you might want to skip using next(reader).
Skipping the header example:
with open('data.csv', 'r') as file:
    reader = csv.reader(file)
    next(reader)  # Skip the first row
    for row in reader:
        print(row)
3. Writing to CSV Files
To create or modify a CSV file, use csv.writer().
import csv
# Writing to a CSV file
data = [
    ["Name", "Age", "Country"],
    ["John", 25, "USA"],
    ["Emma", 30, "UK"]
]
with open('output.csv', mode='w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)
Key points:
- 
newline=''prevents adding extra blank lines on some systems.
- Use writer.writerow()for a single row,writer.writerows()for multiple rows.
4. Using DictReader and DictWriter
Instead of working with lists, DictReader and DictWriter let you use column headers as keys.
Reading CSV as dictionaries:
import csv
with open('data.csv', mode='r') as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row['Name'], row['Country'])
Writing CSV from dictionaries:
import csv
data = [
    {"Name": "John", "Age": 25, "Country": "USA"},
    {"Name": "Emma", "Age": 30, "Country": "UK"}
]
with open('dict_output.csv', mode='w', newline='') as file:
    fieldnames = ["Name", "Age", "Country"]
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)
5. Handling Different Delimiters
Not all CSVs use commas. Some use semicolons or tabs.
import csv
with open('semicolon_data.csv', mode='r') as file:
    reader = csv.reader(file, delimiter=';')
    for row in reader:
        print(row)
6. Best Practices
✅ Always use with open() for automatic file closing.
✅ Use newline='' when writing to avoid extra blank lines.
✅ Consider pandas for large datasets.
✅ Handle encoding (e.g., encoding='utf-8') if your CSV contains special characters.
Challenge for You
- Create a CSV file containing at least 5 rows of employee data.
- Write a script to:
- Read the CSV file using DictReader.
- Add a new column for "Salary".
- Save it back to a new CSV file using DictWriter.
 
 
              
 
    
Top comments (0)