Automation with Python enables repetitive tasks to be performed efficiently, saving time and reducing human error. Common use cases include file handling, web scraping, and system monitoring.
File and Directory Automation
Python’s os and shutil modules facilitate file and directory manipulation.
File Management
import os
# Create a new file
with open("example.txt", "w") as file:
file.write("Hello, Automation!")
# Rename a file
os.rename("example.txt", "new_example.txt")
# Delete a file
os.remove("new_example.txt")
Directory Management
# Create a directory
os.mkdir("new_folder")
# List contents of a directory
print(os.listdir("."))
# Remove a directory
os.rmdir("new_folder")
Copying and Moving Files
import shutil
# Copy a file
shutil.copy("source.txt", "destination.txt")
# Move a file
shutil.move("file.txt", "new_folder/file.txt")
Web Scraping
Web scraping extracts data from websites. Python’s requests and BeautifulSoup libraries are commonly used for this purpose.
Installing Dependencies
pip install requests beautifulsoup4
Example: Scraping Website Data
import requests
from bs4 import BeautifulSoup
# Send a GET request
url = "https://example.com"
response = requests.get(url)
# Parse HTML content
soup = BeautifulSoup(response.text, "html.parser")
# Extract specific elements
titles = soup.find_all("h1")
for title in titles:
print(title.text)
Handling Dynamic Content
For websites with dynamic content, use selenium.
pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
# Setup WebDriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# Extract dynamic content
elements = driver.find_elements(By.TAG_NAME, "h1")
for element in elements:
print(element.text)
driver.quit()
System Monitoring
System monitoring tasks, such as tracking resource usage or automating backups, can be achieved using Python.
Example: Monitoring CPU and Memory Usage
import psutil
# Get CPU usage
print("CPU Usage:", psutil.cpu_percent(), "%")
# Get memory usage
memory = psutil.virtual_memory()
print("Memory Usage:", memory.percent, "%")
Scheduling Tasks
The schedule library is used to run tasks at specific intervals.
pip install schedule
import schedule
import time
def job():
print("Running scheduled task...")
# Schedule the task\schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
Automating Emails
Automating emails can be achieved using the smtplib library.
Example: Sending an Email
import smtplib
from email.mime.text import MIMEText
# Email details
sender = "you@example.com"
recipient = "recipient@example.com"
subject = "Automated Email"
body = "Hello, this is an automated email."
# Create MIMEText object
msg = MIMEText(body)
msg["Subject"] = subject
msg["From"] = sender
msg["To"] = recipient
# Send email
with smtplib.SMTP("smtp.example.com", 587) as server:
server.starttls()
server.login(sender, "your_password")
server.send_message(msg)
Exercises
Exercise 1: Automate File Cleanup
Write a script to delete all .tmp files in a directory.
Solution:
import os
for file in os.listdir("."):
if file.endswith(".tmp"):
os.remove(file)
print(f"Deleted: {file}")
Exercise 2: Scrape and Save Data
Scrape titles from a webpage and save them to a file.
Solution:
url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
with open("titles.txt", "w") as file:
for title in soup.find_all("h1"):
file.write(title.text + "\n")
Exercise 3: Monitor Disk Usage
Write a script to monitor and alert if disk usage exceeds 80%.
Solution:
import psutil
disk = psutil.disk_usage("/")
if disk.percent > 80:
print("Disk usage alert!", disk.percent, "%")
Best Practices
Use libraries suited to the task for efficiency.
Avoid hardcoding sensitive information like passwords; use environment variables instead.
Test automation scripts in a controlled environment before deploying.
Implement error handling to manage unexpected scenarios.
Document scripts for future reference and maintenance.
In the next chapter, we will explore Python’s role in cloud and DevOps, including writing deployment scripts and working with cloud SDKs.