Table of Contents
- os: Interact with the Operating System
- sys: Control the Python Interpreter
- datetime: Manage Dates and Times
- json: Work with JSON Data
- csv: Read and Write CSV Files
- collections: Advanced Data Structures
- re: Regular Expressions
- itertools: Efficient Iteration Tools
- pathlib: Object-Oriented File Paths
- logging: Replace Print with Structured Logging
- unittest: Write Unit Tests
- math: Mathematical Functions
- random: Generate Random Numbers
- Reference
os: Interact with the Operating System
The os module provides tools to interact with the underlying operating system (e.g., file paths, environment variables, process management).
Key Features:
os.getcwd(): Get the current working directory.os.listdir(path): List files/directories in a path.os.path: Submodule for path manipulations (e.g.,os.path.join(),os.path.exists()).os.makedirs(path): Create directories recursively.
Example:
import os
# Get current directory
print("Current Directory:", os.getcwd())
# List files in the current directory
print("Files in Directory:", os.listdir('.'))
# Check if a path exists
path = "my_folder"
if not os.path.exists(path):
os.makedirs(path) # Create directory if it doesn't exist
print(f"Created directory: {path}")
sys: Control the Python Interpreter
The sys module gives access to the Python interpreter’s variables and functions, such as command-line arguments and exit statuses.
Key Features:
sys.argv: List of command-line arguments passed to the script.sys.exit(status): Exit the interpreter with a status code (0 = success, non-zero = error).sys.path: List of directories where Python searches for modules.
Example:
import sys
# Get command-line arguments
print("Script Name:", sys.argv[0]) # First argument is the script itself
print("Arguments:", sys.argv[1:]) # Subsequent arguments
# Exit with an error if no arguments are provided
if len(sys.argv) < 2:
print("Error: No arguments provided!")
sys.exit(1) # Non-zero exit code indicates failure
datetime: Manage Dates and Times
The datetime module simplifies working with dates, times, and time intervals.
Key Features:
datetime.date: Represents a date (year, month, day).datetime.time: Represents a time (hour, minute, second).datetime.datetime: Combines date and time.datetime.timedelta: Represents a time interval (e.g., 3 days).strftime()/strptime(): Format/parse dates as strings.
Example:
from datetime import datetime, timedelta
# Get current date and time
now = datetime.now()
print("Current Time:", now.strftime("%Y-%m-%d %H:%M:%S")) # Format as string
# Calculate future date (3 days from now)
future_date = now + timedelta(days=3)
print("3 Days Later:", future_date.strftime("%Y-%m-%d"))
# Parse a string into a datetime object
birthday = datetime.strptime("1990-05-15", "%Y-%m-%d")
print("Birthday:", birthday.date())
json: Work with JSON Data
The json module handles serialization (Python → JSON) and deserialization (JSON → Python) of data.
Key Features:
json.dumps(obj): Serialize a Python object to a JSON string.json.loads(s): Deserialize a JSON string to a Python object.json.dump(obj, file): Serialize and write to a file.json.load(file): Read and deserialize from a file.
Example:
import json
# Sample Python data
data = {
"name": "Alice",
"age": 30,
"is_student": False,
"hobbies": ["reading", "hiking"]
}
# Serialize to JSON string (with indentation for readability)
json_str = json.dumps(data, indent=4)
print("JSON String:\n", json_str)
# Deserialize JSON string back to Python
parsed_data = json.loads(json_str)
print("Name:", parsed_data["name"])
# Write to a JSON file
with open("data.json", "w") as f:
json.dump(data, f, indent=4)
# Read from a JSON file
with open("data.json", "r") as f:
file_data = json.load(f)
print("Hobbies from File:", file_data["hobbies"])
csv: Read and Write CSV Files
The csv module simplifies working with comma-separated values (CSV) files, common for tabular data.
Key Features:
csv.writer(file): Write rows to a CSV file.csv.reader(file): Read rows from a CSV file.csv.DictWriter/csv.DictReader: Work with rows as dictionaries (using headers).
Example:
import csv
# Write data to a CSV file using DictWriter (includes headers)
data = [
{"name": "Bob", "age": 25, "city": "Paris"},
{"name": "Charlie", "age": 35, "city": "London"}
]
with open("people.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["name", "age", "city"])
writer.writeheader() # Write headers
writer.writerows(data) # Write all rows
# Read from the CSV file using DictReader
with open("people.csv", "r") as f:
reader = csv.DictReader(f)
for row in reader:
print(f"{row['name']} lives in {row['city']}")
collections: Advanced Data Structures
The collections module extends Python’s built-in data structures with specialized tools.
Key Structures:
namedtuple: Immutable tuple with named fields (e.g.,Point(x=1, y=2)).deque: Double-ended queue for efficient appends/pops from both ends.defaultdict: Dictionary with default values for missing keys.Counter: Count hashable objects (e.g., word frequencies).
Example:
from collections import namedtuple, deque, defaultdict, Counter
# namedtuple: Create a "Point" type with x and y fields
Point = namedtuple("Point", ["x", "y"])
p = Point(3, 4)
print("Point Coordinates:", p.x, p.y)
# deque: Efficient queue operations
dq = deque([1, 2, 3])
dq.append(4) # Add to end
dq.appendleft(0) # Add to start
print("Deque:", dq) # Output: deque([0, 1, 2, 3, 4])
# defaultdict: Group words by their first letter
words = ["apple", "banana", "apricot", "blueberry"]
grouped = defaultdict(list)
for word in words:
grouped[word[0]].append(word)
print("Grouped by First Letter:", dict(grouped)) # {'a': ['apple', 'apricot'], 'b': ['banana', 'blueberry']}
# Counter: Count word frequencies
sentence = "hello world hello python hello"
word_counts = Counter(sentence.split())
print("Word Frequencies:", word_counts) # {'hello': 3, 'world': 1, 'python': 1}
re: Regular Expressions
The re module provides tools for pattern matching and text manipulation using regular expressions.
Key Functions:
re.search(pattern, string): Search for a pattern anywhere in the string.re.match(pattern, string): Match a pattern at the start of the string.re.findall(pattern, string): Return all non-overlapping matches as a list.re.compile(pattern): Compile a pattern for reuse (improves performance).
Example:
import re
# Validate an email (simplified pattern)
email_pattern = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"
email = "[email protected]"
if re.fullmatch(email_pattern, email):
print(f"{email} is a valid email.")
# Find all numbers in a string
text = "The price is $10.99, and the discount is 20%."
numbers = re.findall(r"\d+\.?\d*", text) # Matches integers and decimals
print("Numbers Found:", numbers) # Output: ['10.99', '20']
# Compile a pattern for reuse
pattern = re.compile(r"cat")
text = "cat dog cat bird"
print("Matches:", pattern.findall(text)) # Output: ['cat', 'cat']
itertools: Efficient Iteration Tools
The itertools module provides functions for creating and manipulating iterators, ideal for efficient looping.
Key Functions:
product: Cartesian product of iterables (e.g.,product([1,2], ['a','b'])→(1,'a'), (1,'b'), (2,'a'), (2,'b')).permutations: All possible orderings of an iterable (without replacement).combinations: All possible subsets of an iterable (without replacement, order doesn’t matter).chain: Combine multiple iterables into one.
Example:
from itertools import product, permutations, combinations, chain
# Product: All combinations of two lists
colors = ["red", "blue"]
sizes = ["S", "M"]
for color, size in product(colors, sizes):
print(f"Product: {color} {size}") # red S, red M, blue S, blue M
# Permutations: All orderings of 2 elements from [1,2,3]
print("Permutations of 2 elements:", list(permutations([1,2,3], 2))) # (1,2), (1,3), (2,1), (2,3), (3,1), (3,2)
# Combinations: All subsets of 2 elements from [1,2,3]
print("Combinations of 2 elements:", list(combinations([1,2,3], 2))) # (1,2), (1,3), (2,3)
# Chain: Combine multiple iterables
list1 = [1, 2, 3]
list2 = ["a", "b"]
combined = chain(list1, list2)
print("Chained Iterable:", list(combined)) # [1, 2, 3, 'a', 'b']
pathlib: Object-Oriented File Paths
The pathlib module (Python 3.4+) provides an object-oriented interface to file paths, replacing older os.path functions.
Key Features:
Path(): Create a path object (e.g.,Path("data/file.txt")).glob(pattern): Find files matching a pattern (e.g.,Path().glob("*.txt")).exists(): Check if the path exists.open(): Read/write files directly from the path object.
Example:
from pathlib import Path
# Create a Path object for the current directory
current_dir = Path.cwd()
print("Current Directory:", current_dir)
# List all .txt files in the current directory
txt_files = list(current_dir.glob("*.txt"))
print("Text Files:", txt_files)
# Check if a path exists
data_path = current_dir / "data" # Use / to join paths (OS-agnostic)
if not data_path.exists():
data_path.mkdir() # Create directory
print(f"Created: {data_path}")
# Read a file using pathlib
file_path = data_path / "notes.txt"
file_path.write_text("Hello, pathlib!") # Write to file
print("File Content:", file_path.read_text()) # Read from file
logging: Replace Print with Structured Logging
The logging module is a powerful alternative to print() for debugging and monitoring. It supports log levels, file output, and formatting.
Key Features:
- Log levels:
DEBUG(detailed debug info),INFO(general updates),WARNING,ERROR,CRITICAL(severe issues). logging.basicConfig(): Configure logging (level, format, output file).- Handlers: Send logs to files, consoles, or external services.
Example:
import logging
# Basic configuration (log to console with timestamp and level)
logging.basicConfig(
level=logging.DEBUG, # Capture all levels from DEBUG upwards
format="%(asctime)s - %(levelname)s - %(message)s"
)
# Log messages at different levels
logging.debug("This is a debug message (detailed info).")
logging.info("This is an info message (general update).")
logging.warning("This is a warning (something might be wrong).")
logging.error("This is an error (something failed).")
logging.critical("This is critical (system may crash).")
# Log to a file (add filename to basicConfig)
logging.basicConfig(
filename="app.log",
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
logging.info("This message will be written to app.log.")
unittest: Write Unit Tests
The unittest module (inspired by JUnit) lets you write and run unit tests to validate code behavior.
Key Components:
unittest.TestCase: Base class for test cases.- Assert methods:
assertEqual(a, b),assertTrue(x),assertRaises(Error), etc. setUp()/tearDown(): Run before/after each test method.
Example:
import unittest
# Function to test
def add(a, b):
return a + b
# Test case class
class TestAddFunction(unittest.TestCase):
def test_add_positive_numbers(self):
self.assertEqual(add(2, 3), 5)
def test_add_negative_numbers(self):
self.assertEqual(add(-1, -1), -2)
def test_add_zero(self):
self.assertEqual(add(0, 5), 5)
if __name__ == "__main__":
unittest.main() # Run all tests
Output:
...
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK
math: Mathematical Functions
The math module provides access to mathematical constants and functions (trigonometry, logarithms, etc.).
Key Functions/Constants:
math.pi: π (3.14159…).math.sqrt(x): Square root of x.math.sin(x)/math.cos(x): Trigonometric functions (x in radians).math.factorial(n): Factorial of n (n!).
Example:
import math
# Calculate the area of a circle (A = πr²)
radius = 5
area = math.pi * math.pow(radius, 2)
print(f"Circle Area (r=5): {area:.2f}") # Output: 78.54
# Factorial of 5 (5! = 5×4×3×2×1)
print("Factorial of 5:", math.factorial(5)) # Output: 120
# Square root of 25
print("Square Root of 25:", math.sqrt(25)) # Output: 5.0
random: Generate Random Numbers
The random module generates pseudo-random numbers for simulations, games, and sampling.
Key Functions:
random.randint(a, b): Random integer between a and b (inclusive).random.random(): Random float between 0.0 and 1.0.random.choice(seq): Randomly select an element from a sequence.random.shuffle(seq): Shuffle a sequence in place.
Example:
import random
# Random integer between 1 and 10
print("Random Int:", random.randint(1, 10))
# Random float between 0 and 1
print("Random Float:", random.random())
# Pick a random fruit from a list
fruits = ["apple", "banana", "cherry"]
print("Random Fruit:", random.choice(fruits))
# Shuffle a list
cards = ["Ace", "King", "Queen", "Jack"]
random.shuffle(cards)
print("Shuffled Cards:", cards)
Reference
- Python Standard Library Official Docs
- Module-specific docs:
By mastering these modules, you’ll unlock Python’s full potential for everyday programming tasks. The Standard Library is a treasure trove—explore it to write cleaner, more efficient code! 🐍