Every team has repetitive tasks that eat hours every week. Here are 5 Python scripts that saved my team 20 hours this month, with code you can copy today.
1. Automated Log Analyzer (Saved 4 hours/week)
We were manually grep-ing through logs to find errors. This script does it automatically:
import re
from collections import Counter
from pathlib import Path
def analyze_logs(log_dir):
error_patterns = {
"timeout": r"Connection.*timeout",
"auth_fail": r"Authentication.*failed",
"db_error": r"Database.*error",
"memory": r"Out of memory",
}
errors = Counter()
for log_file in Path(log_dir).glob("*.log"):
for line in log_file.read_text().splitlines():
for name, pattern in error_patterns.items():
if re.search(pattern, line, re.IGNORECASE):
errors[name] += 1
return errors.most_common()
# Usage
for error_type, count in analyze_logs("/var/log/app"):
print(f"{error_type}: {count} occurrences")
2. Meeting Notes Summarizer (Saved 3 hours/week)
from datetime import datetime
def summarize_meeting(transcript):
"""Extract action items and decisions from meeting transcript."""
action_items = []
decisions = []
for line in transcript.split("."):
line = line.strip()
if any(word in line.lower() for word in ["will", "should", "need to", "action"]):
action_items.append(line)
if any(word in line.lower() for word in ["decided", "agreed", "conclusion"]):
decisions.append(line)
return {"actions": action_items, "decisions": decisions}
3. Deployment Health Checker (Saved 5 hours/week)
import subprocess
import json
def check_deployment_health(services):
results = []
for service in services:
try:
response = subprocess.run(
["curl", "-s", "-o", "/dev/null", "-w", "%{http_code}", f"{service}/health"],
capture_output=True, text=True, timeout=5
)
status = "healthy" if response.stdout == "200" else "unhealthy"
results.append({"service": service, "status": status, "code": response.stdout})
except subprocess.TimeoutExpired:
results.append({"service": service, "status": "timeout", "code": "000"})
return results
4. CSV Data Validator (Saved 4 hours/week)
import csv
from collections import defaultdict
def validate_csv(filepath, required_cols):
errors = defaultdict(list)
with open(filepath) as f:
reader = csv.DictReader(f)
for i, row in enumerate(reader, 1):
for col in required_cols:
if not row.get(col):
errors[col].append(f"Row {i}: missing {col}")
for col, val in row.items():
if val and len(val) > 1000:
errors[col].append(f"Row {i}: value too long")
return dict(errors)
5. Slack Alert Router (Saved 4 hours/week)
import json
import urllib.request
def send_alert(webhook, severity, message, channel="#ops"):
color = {"critical": "#FF0000", "warning": "#FFA500", "info": "#36a64f"}
payload = {
"channel": channel,
"attachments": [{
"color": color.get(severity, "#36a64f"),
"text": f"[{severity.upper()}] {message}",
"ts": str(int(time.time()))
}]
}
req = urllib.request.Request(webhook, json.dumps(payload).encode(), {"Content-Type": "application/json"})
urllib.request.urlopen(req)
The Impact
| Script | Time Saved | Use Case |
|---|---|---|
| Log Analyzer | 4 hrs/week | Error detection |
| Meeting Summarizer | 3 hrs/week | Note taking |
| Health Checker | 5 hrs/week | Monitoring |
| CSV Validator | 4 hrs/week | Data quality |
| Alert Router | 4 hrs/week | Notifications |
| Total | 20 hrs/week |
These scripts are just the start. For more automation templates, check out the Automation Starter Pack.
Top comments (0)