Logging to CSV files helps you save data in a simple table format. This makes it easy to read, share, and analyze later.
Logging to CSV files in Raspberry Pi
import csv with open('filename.csv', mode='a', newline='') as file: writer = csv.writer(file) writer.writerow([data1, data2, data3])
Use mode='a' to add data without erasing old logs.
newline='' prevents blank lines between rows on some systems.
import csv with open('log.csv', 'a', newline='') as file: writer = csv.writer(file) writer.writerow(['Time', 'Temperature', 'Humidity'])
import csv with open('log.csv', 'a', newline='') as file: writer = csv.writer(file) writer.writerow(['12:00', 22.5, 60])
This program logs the current time, a random temperature, and humidity to a CSV file named 'sensor_log.csv'. It adds a header if the file is empty or does not exist.
import csv from datetime import datetime import random import os filename = 'sensor_log.csv' # Check if file exists and is empty file_exists = os.path.isfile(filename) with open(filename, 'a', newline='') as file: writer = csv.writer(file) if not file_exists or os.path.getsize(filename) == 0: writer.writerow(['Timestamp', 'Temperature', 'Humidity']) timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') temperature = round(random.uniform(20.0, 25.0), 2) humidity = random.randint(40, 70) writer.writerow([timestamp, temperature, humidity]) print(f"Logged data: {timestamp}, {temperature}°C, {humidity}%")
Always open the file with newline='' to avoid extra blank lines in Windows.
Use 'a' mode to keep old logs and add new data.
Check if the file is empty before writing headers to avoid duplicates.
Logging to CSV files stores data in a simple, readable table format.
Use Python's csv module to write rows easily.
Open files in append mode to keep adding data without erasing old logs.
Practice
Solution
Step 1: Understand the purpose of CSV logging
CSV files store data in rows and columns, making it easy to read and analyze later.Step 2: Identify the benefit for Raspberry Pi logging
Logging data in CSV helps keep records in a simple format without complex software.Final Answer:
To store data in a simple table format that is easy to read and analyze -> Option DQuick Check:
CSV logging = simple readable data [OK]
- Thinking CSV speeds up the Raspberry Pi
- Confusing CSV logging with hardware functions
- Assuming CSV files install software
Solution
Step 1: Understand file modes in Python
'r' is read-only, 'w' overwrites, 'a' appends, 'x' creates new file only if not exists.Step 2: Choose mode to add logs without erasing old data
Appending mode 'a' adds new lines at the end without deleting existing logs.Final Answer:
open('log.csv', 'a') -> Option CQuick Check:
Append mode = 'a' [OK]
- Using 'w' which erases existing file content
- Using 'r' which does not allow writing
- Using 'x' which fails if file exists
import csv
with open('log.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Time', 'Temperature'])
writer.writerow(['10:00', '22'])Solution
Step 1: Analyze the code writing rows to CSV
The code writes two rows: first is header ['Time', 'Temperature'], second is data ['10:00', '22'].Step 2: Understand CSV file content after appending
Both rows are added as separate lines in the CSV file.Final Answer:
A CSV file with two rows: header and one data row -> Option AQuick Check:
Two rows written = header + data [OK]
- Thinking data merges into one row
- Expecting syntax errors from correct code
- Assuming file stays empty after writing
import csv
file = open('log.csv', 'w')
writer = csv.writer(file)
writer.writerow(['Date', 'Value'])
file.close()What is the likely problem?
Solution
Step 1: Check file opening and writing
File is opened in write mode and writerow is called correctly.Step 2: Identify missing newline='' causing blank lines on Windows/Linux
Without newline='', csv.writer may write extra blank lines or cause issues making file appear empty.Final Answer:
The newline parameter is missing in open() causing blank lines -> Option BQuick Check:
Use newline='' to avoid blank lines in CSV [OK]
- Assuming append mode is required to write
- Forgetting to close the file (but here it is closed)
- Thinking writerow syntax is wrong
Solution
Step 1: Identify file mode to keep old data
Mode 'a' appends new data without erasing existing logs, perfect for ongoing logging.Step 2: Check code correctness for logging new data
Code opens file in append mode with newline='', writes one new row with time and value.Final Answer:
Code that appends new rows without deleting old data -> Option AQuick Check:
Append mode + newline='' = safe logging [OK]
- Using 'w' mode which erases old logs
- Using 'r' mode which is read-only
- Using 'x' mode which fails if file exists
Ready to prove it?
Pass the test and this pattern moves unknown
