Learn Python Programming
Start with getting started, installation, and core basics. Clear explanations and practical examples to help you learn faster.
Python Directory and Files Management
Python provides the os, shutil, and pathlib modules for creating, reading, moving, and deleting files and directories.
Reading and Writing Files
# Writing to a file
with open("output.txt", "w") as f:
f.write("Hello, World!\n")
f.write("Second line\n")
# Reading entire file
with open("output.txt", "r") as f:
content = f.read()
print(content)
# Reading line by line (memory efficient for large files)
with open("output.txt") as f:
for line in f:
print(line.strip())
# Appending to a file
with open("output.txt", "a") as f:
f.write("Appended line\n")
# Reading into a list of lines
with open("output.txt") as f:
lines = f.readlines()
print(lines) # ["Hello, World!\n", "Second line\n", ...]
Working with Directories (os module)
import os
# Current working directory
print(os.getcwd()) # /home/user/project
# List directory contents
files = os.listdir(".")
print(files) # ["main.py", "data", "README.md"]
# Create a directory
os.mkdir("new_folder") # single directory
os.makedirs("path/to/nested", exist_ok=True) # nested, no error if exists
# Check if path exists
print(os.path.exists("output.txt")) # True
print(os.path.isfile("output.txt")) # True
print(os.path.isdir("new_folder")) # True
# Get file information
size = os.path.getsize("output.txt") # file size in bytes
print(f"File size: {size} bytes")
# Rename a file or directory
os.rename("old_name.txt", "new_name.txt")
# Remove file and directory
os.remove("temp.txt") # delete a file
os.rmdir("empty_folder") # delete empty directory only
pathlib — Modern Path Handling (Python 3.4+)
from pathlib import Path
# Create path objects
current = Path(".")
home = Path.home()
config = home / ".config" / "myapp" / "settings.json"
# Path properties
p = Path("/home/user/documents/report.pdf")
print(p.name) # "report.pdf"
print(p.stem) # "report"
print(p.suffix) # ".pdf"
print(p.parent) # /home/user/documents
print(p.parts) # ("/", "home", "user", "documents", "report.pdf")
# Check existence
print(config.exists()) # True/False
print(config.is_file()) # True/False
print(config.is_dir()) # False
# Create directories
Path("data/raw").mkdir(parents=True, exist_ok=True)
# Read and write files
path = Path("greeting.txt")
path.write_text("Hello from pathlib!")
content = path.read_text()
print(content) # "Hello from pathlib!"
# Iterate directory contents
for item in Path(".").iterdir():
print(f"{"DIR " if item.is_dir() else "FILE"} {item.name}")
# Glob pattern matching
for py_file in Path("src").glob("**/*.py"): # recursive
print(py_file)
Copying, Moving, and Deleting (shutil)
import shutil
# Copy a file
shutil.copy("source.txt", "backup.txt") # copy file
shutil.copy2("source.txt", "backup.txt") # copy with metadata
# Copy entire directory
shutil.copytree("src_folder", "dst_folder")
# Move file or directory
shutil.move("old_location/file.txt", "new_location/file.txt")
# Delete directory and all contents (be careful!)
shutil.rmtree("folder_to_delete")
# Get disk usage
total, used, free = shutil.disk_usage("/")
print(f"Free space: {free // (1024**3)} GB")
Practical Examples
# Find all files larger than 1MB
from pathlib import Path
def find_large_files(directory, min_size_mb=1):
min_bytes = min_size_mb * 1024 * 1024
large_files = []
for f in Path(directory).rglob("*"):
if f.is_file() and f.stat().st_size > min_bytes:
size_mb = f.stat().st_size / (1024 * 1024)
large_files.append((f, size_mb))
return sorted(large_files, key=lambda x: x[1], reverse=True)
for path, size in find_large_files(".", min_size_mb=0.5):
print(f"{size:.1f} MB - {path}")
# Organize files by extension
import shutil
from pathlib import Path
def organize_downloads(folder):
categories = {
"Images": [".jpg", ".png", ".gif", ".svg"],
"Documents": [".pdf", ".docx", ".txt", ".xlsx"],
"Videos": [".mp4", ".avi", ".mkv"],
"Code": [".py", ".js", ".html", ".css"],
}
for file in Path(folder).iterdir():
if file.is_file():
for category, extensions in categories.items():
if file.suffix.lower() in extensions:
dest = Path(folder) / category
dest.mkdir(exist_ok=True)
shutil.move(str(file), str(dest / file.name))
break
- Always use
with open()to ensure files are properly closed after use. - Prefer
pathlib.Pathoveros.pathfor cleaner, more readable path code. - Use
shutilfor copying, moving, and deleting entire directories. - Use
exist_ok=Truewithmkdir()to avoid errors if directory exists. - Use
.rglob("pattern")or.glob("**/pattern")for recursive file search.
Frequently Asked Questions
Answers to common Python getting-started questions
Python Programming Tutorial — Learn Python from Scratch
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. You can try every example in our free Python Compiler without installing anything.
Each topic builds on the previous one, starting from installation and Hello World through advanced concepts like decorators, generators, and file I/O. Whether you are a complete beginner or refreshing specific skills, every page gives you immediately usable code.
What This Tutorial Covers
- Getting Started: Install Python, run online, Hello World
- Basics: Variables, data types, type conversion, input/output
- Operators: Arithmetic, comparison, logical, assignment
- Control Flow: if/elif/else, for loops, while, break/continue
- Data Structures: Lists, tuples, sets, dictionaries
- Strings: Methods, slicing, formatting, f-strings
- Functions: Parameters, return values, *args, **kwargs, scope
- OOP: Classes, objects, inheritance, polymorphism
- File I/O: Reading, writing, CSV, JSON handling
- Exceptions: try/except, custom exceptions, raise
- Advanced: List comprehensions, lambda, generators, decorators
- Modules: import, pip, packages, __name__ == "__main__"
Why Learn Python in 2026?
- #1 most popular language: Ranked first on TIOBE, Stack Overflow, and GitHub for multiple years running.
- AI and Data Science: The primary language for machine learning (TensorFlow, PyTorch, scikit-learn), data analysis (Pandas, NumPy), and AI development.
- Web development: Django and Flask power backends at companies like Instagram, Spotify, and Pinterest.
- Automation: Automate files, emails, web scraping, reports, and system administration tasks in minutes.
- Beginner-friendly: Clean syntax with enforced indentation makes code readable from day one — no curly braces or semicolons.
- Massive job market: Python developers are in high demand across tech, finance, healthcare, and research.
Python vs Other Languages
| Feature | Python | Java | JavaScript | C++ |
|---|---|---|---|---|
| Syntax | Very clean, readable | Verbose | Moderate | Complex |
| Typing | Dynamic, strong | Static, strong | Dynamic, weak | Static, strong |
| Speed | Slower (interpreted) | Fast (JIT) | Fast (V8 JIT) | Fastest (native) |
| Best For | AI/ML, data, automation | Enterprise, Android | Web frontend/backend | Systems, games |
| Learning Time | 2–4 weeks basics | 4–6 weeks basics | 3–4 weeks basics | 8–12 weeks basics |
How to Get Started
- Run Python online: Use our free Python Compiler — no installation needed.
- Install locally: Download Python 3 from
python.org(Windows/Mac) or useapt install python3(Linux). - Verify: Run
python3 --versionin your terminal to confirm installation. - Choose an editor: VS Code with Python extension (free), PyCharm Community (free), or Jupyter Notebook for data science.
- Follow this tutorial in order: Start from Introduction and work through each topic sequentially.
Frequently Asked Questions
No. Python is designed to be beginner-friendly. This tutorial starts from absolute zero and builds up gradually.
Python 3.10+ is recommended. Python 2 reached end-of-life in 2020. All examples in this tutorial use Python 3 syntax.
Basics (syntax, loops, functions) take 2–4 weeks. Intermediate (OOP, file I/O, modules) adds 3–4 weeks. Specialisation (Django, data science, ML) takes another 2–3 months.
Yes, completely free. No account, no sign-up. All topics and examples available without restriction.
Who Is This For?
Complete beginners choosing their first programming language. Students in CS courses needing a Python reference. Data analysts transitioning from Excel to Python (Pandas). Self-taught developers adding Python to their skill set. Professionals automating repetitive tasks. Anyone preparing for Python coding interviews.