Free Interactive Python Course

Python Tutorial — Learn Python Step by Step

Key takeaway: Master Python programming from scratch — variables, loops, functions, OOP, file handling, and libraries — with clear human-readable explanations and runnable code examples.

50+ Structured Lessons
Runnable Code Examples
100% Free No Registration
Updated October 2026

Writing CSV Files in Python

Python's csv.writer and csv.DictWriter handle writing tabular data to CSV files, including proper quoting and escaping of special characters.

Basic Writing with csv.writer

import cs
                    
import csv

# Write rows as lists
with open("output.csv", "w", newline="") as f:
    writer = csv.writer(f)

    # Write header
    writer.writerow(["name", "age", "city"])

    # Write individual rows
    writer.writerow(["Alice", 30, "New York"])
    writer.writerow(["Bob", 25, "London"])

    # Write multiple rows at once
    more_data = [
        ["Charlie", 35, "Tokyo"],
        ["Diana", 28, "Paris"],
    ]
    writer.writerows(more_data)

# IMPORTANT: newline="" prevents double blank lines on Windows

Writing with csv.DictWriter

import csv

# Write from dictionaries — clearer and less error-prone
users = [
    {"name": "Alice", "email": "alice@example.com", "role": "admin"},
    {"name": "Bob", "email": "bob@example.com", "role": "user"},
    {"name": "Charlie", "email": "charlie@example.com", "role": "user"},
]

with open("users.csv", "w", newline="") as f:
    fieldnames = ["name", "email", "role"]
    writer = csv.DictWriter(f, fieldnames=fieldnames)

    writer.writeheader()    # writes the header row
    writer.writerows(users) # writes all data rows

# Handling missing keys with restval and extrasaction
with open("partial.csv", "w", newline="") as f:
    writer = csv.DictWriter(
        f,
        fieldnames=["name", "email", "phone"],
        restval="N/A",          # value for missing keys
        extrasaction="ignore"   # ignore extra keys in dicts
    )
    writer.writeheader()
    writer.writerow({"name": "Alice", "email": "alice@test.com"})
    # phone column will show "N/A"

Customizing Output Format

import csv

data = [
    ["Product", "Price", "Description"],
    ["Widget", 19.99, "A useful widget, very popular"],
    ["Gadget", 49.99, "High-tech gadget (\"premium\")"],
]

# Tab-separated output
with open("output.tsv", "w", newline="") as f:
    writer = csv.writer(f, delimiter="\t")
    writer.writerows(data)

# Quote all fields
with open("quoted.csv", "w", newline="") as f:
    writer = csv.writer(f, quoting=csv.QUOTE_ALL)
    writer.writerows(data)

# Quote only non-numeric fields
with open("smart_quoted.csv", "w", newline="") as f:
    writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
    writer.writerows(data)

# Quoting options:
# csv.QUOTE_MINIMAL  — only quote when needed (default)
# csv.QUOTE_ALL      — quote every field
# csv.QUOTE_NONNUMERIC — quote strings, leave numbers unquoted
# csv.QUOTE_NONE     — never quote (use escapechar instead)

Appending to Existing CSV

import csv
import os

filename = "log.csv"

# Check if file exists to decide whether to write header
file_exists = os.path.exists(filename)

with open(filename, "a", newline="") as f:  # "a" for append
    writer = csv.writer(f)

    if not file_exists:
        writer.writerow(["timestamp", "event", "user"])

    writer.writerow(["2024-01-15 10:30", "login", "alice"])
    writer.writerow(["2024-01-15 10:35", "purchase", "alice"])

Practical: Export Database/API Results

import csv

# Convert a list of objects/dicts to CSV
def export_to_csv(data, filename, fields=None):
    """Export list of dicts to a CSV file."""
    if not data:
        print("No data to export")
        return

    # Auto-detect fields from first record if not provided
    if fields is None:
        fields = list(data[0].keys())

    with open(filename, "w", newline="") as f:
        writer = csv.DictWriter(f, fieldnames=fields)
        writer.writeheader()
        writer.writerows(data)

    print(f"Exported {len(data)} records to {filename}")

# Usage
orders = [
    {"id": 1, "product": "Widget", "qty": 5, "total": 99.95},
    {"id": 2, "product": "Gadget", "qty": 2, "total": 99.98},
    {"id": 3, "product": "Tool", "qty": 10, "total": 149.90},
]

export_to_csv(orders, "orders_export.csv")

# Export only specific columns
export_to_csv(orders, "summary.csv", fields=["product", "total"])
  • Always use newline="" when opening files for CSV writing to prevent blank rows.
  • Use csv.DictWriter for clarity — column order is explicit and data is self-documenting.
  • The csv module auto-handles quoting of values containing commas, quotes, or newlines.
  • Use append mode ("a") to add rows without overwriting existing data.
  • Set restval and extrasaction to handle incomplete or extra dictionary keys.

Python Programming Tutorial — Learn Python in a practical, step-by-step way. According to the official Python documentation, Python emphasizes code readability and simplicity, making it ideal for beginners.

Related tools: Python Online Compiler | Python Examples | JavaScript Tutorial | Java Tutorial

Python Career & Learning Guide

Python is the world's most popular programming language for beginners, data science, AI/ML, web development, and automation. This tutorial teaches Python step-by-step with clear explanations and runnable code examples in our free Python Compiler.

Why Learn Python in 2026?

  • #1 Most Popular Language: Ranked first on TIOBE, Stack Overflow, and GitHub.
  • AI and Data Science: The primary language for machine learning (TensorFlow, PyTorch, scikit-learn) and data analysis (Pandas, NumPy).
  • Web Development: Django and Flask power scalable backends at companies like Instagram and Spotify.
  • Automation & Scripting: Automate files, emails, web scraping, and data processing in minutes.

Python vs Other Languages

FeaturePythonJavaJavaScriptC++
SyntaxVery clean, readableVerboseModerateComplex
TypingDynamic, strongStatic, strongDynamic, weakStatic, strong
Best ForAI/ML, Data, WebEnterprise, AndroidWeb Frontend/BackendSystems, Games
Learning Time2–4 weeks basics4–6 weeks basics3–4 weeks basics8–12 weeks basics

Frequently Asked Questions

Do I need prior programming experience to learn Python?

No! Python is specifically designed to be beginner-friendly. This tutorial starts from zero and builds up gradually.

Which Python version should I use?

Python 3.10+ is recommended. All examples in this tutorial use Python 3 syntax.

Is this Python tutorial completely free?

Yes, 100% free with no registration or sign-up required. Access all lessons and code examples anytime.