21 Eenvoudige Python-scripts die uw dagelijkse taken zullen automatiseren

Als iemand die meer dan tien jaar in de programmeerwereld heeft doorgebracht, heb ik geleerd dat het automatiseren van repetitieve taken een aanzienlijke hoeveelheid tijd en moeite kan besparen.

Python, met zijn eenvoudige syntaxis en krachtige bibliotheken, is een van de beste programmeertalen voor het maken van automatiseringsscripts. Of je nu een programmeur bent of iemand die dagelijkse taken gemakkelijker wil maken, Python heeft tools die je kunnen helpen.

In dit artikel deel ik 21 Python-scripts die ik heb gebruikt om verschillende taken te automatiseren. Deze scripts zijn perfect voor iedereen die tijd wil besparen en de efficiëntie in hun werkroutine wil verbeteren.

1. Bestanden in bulk hernoemen

Het één voor één hernoemen van bestanden kan een tijdrovende taak zijn, maar met Python kun je dit eenvoudig automatiseren met behulp van de os-module.

Hier is een eenvoudig script dat meerdere bestanden hernoemt in een map op basis van een gegeven patroon:

import os

def bulk_rename(folder_path, old_name_part, new_name_part):
    for filename in os.listdir(folder_path):
        if old_name_part in filename:
            new_filename = filename.replace(old_name_part, new_name_part)
            os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))
            print(f"Renamed {filename} to {new_filename}")

folder = '/path/to/your/folder' bulk_rename(folder, 'old_part', 'new_part')

Dit script zoekt naar bestanden die old_name_part in hun namen bevatten en vervangt het door new_name_part.

2. Automatisch bestanden back-uppen

We weten allemaal hoe belangrijk het is om regelmatig bestanden te back-uppen, en deze taak kan gemakkelijk worden geautomatiseerd met behulp van de shutil-module van Python.

Dit script kopieert alle bestanden van de ene directory naar de andere voor back-updoeleinden:

import shutil
import os

def backup_files(src_dir, dest_dir):
    if not os.path.exists(dest_dir):
        os.makedirs(dest_dir)
    for file in os.listdir(src_dir):
        full_file_name = os.path.join(src_dir, file)
        if os.path.isfile(full_file_name):
            shutil.copy(full_file_name, dest_dir)
            print(f"Backed up {file} to {dest_dir}")

source = '/path/to/source/directory' destination = '/path/to/destination/directory' backup_files(source, destination)

Je kunt dit script dagelijks laten uitvoeren met behulp van taakplanningshulpmiddelen zoals cron (Linux) of Taakplanner (Windows).

3. Bestanden downloaden van het internet

Als je vaak bestanden van het internet downloadt, kun je deze taak automatiseren met behulp van de aiohttp bibliotheek.

Hier is een eenvoudig script om bestanden van URL’s te downloaden:

import aiohttp
import asyncio
import aiofiles

async def download_file(url, filename):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            async with aiofiles.open(filename, 'wb') as file:
                await file.write(await response.read())
            print(f"Downloaded {filename}")

urls = {
    'https://example.com/file1.zip': 'file1.zip',
    'https://example.com/file2.zip': 'file2.zip'
}

async def download_all():
    tasks = [download_file(url, filename) for url, filename in urls.items()]
    await asyncio.gather(*tasks)

asyncio.run(download_all())

Dit script downloadt het bestand van de opgegeven URL en slaat het op in je opgegeven map.

4. E-mailrapporten automatiseren

Als je regelmatig e-mailrapporten moet versturen, kun je dit automatiseren met behulp van de smtplib bibliotheek, waarmee je eenvoudig e-mails vanuit een Gmail-account kunt verzenden:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(subject, body, to_email):
    sender_email = '[email protected]'
    sender_password = 'yourpassword'
    receiver_email = to_email

    msg = MIMEMultipart()
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain'))

    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.starttls()
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())
        server.quit()
        print("Email sent successfully!")
    except Exception as e:
        print(f"Failed to send email: {e}")

subject = 'Monthly Report'
body = 'Here is the monthly report.'
send_email(subject, body, '[email protected]')

Dit script stuurt een eenvoudige e-mail met een onderwerp en inhoud naar een opgegeven ontvanger. Zorg ervoor dat je minder veilige apps inschakelt in Gmail als je deze methode gebruikt.

5. Taakplanner (Taakautomatisering)

Het plannen van taken kan eenvoudig worden gedaan met behulp van de schedule bibliotheek, waarmee je taken zoals het verzenden van een e-mail of het uitvoeren van een back-upscript op specifieke tijden kunt automatiseren:

import schedule
import time

def job():
    print("Running scheduled task!")

# Schedule the task to run every day at 10:00 AM
schedule.every().day.at("10:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

Dit script blijft draaien en voert taken uit op de opgegeven tijd, in dit geval, 10:00 AM elke dag.

6. Webscraping voor gegevensverzameling

Het gebruik van aiohttp voor asynchrone HTTP-verzoeken in plaats van de synchrone requests bibliotheek kan web scraping efficiënter maken.

Dit voorbeeld haalt meerdere pagina’s tegelijk op.

import aiohttp
import asyncio
from bs4 import BeautifulSoup

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def scrape(urls):
    async with aiohttp.ClientSession() as session:
        tasks = [fetch(session, url) for url in urls]
        html_pages = await asyncio.gather(*tasks)
        for html in html_pages:
            soup = BeautifulSoup(html, 'html.parser')
            print(soup.title.string)

urls = ['https://example.com/page1', 'https://example.com/page2'] asyncio.run(scrape(urls))

7. Social Media Berichten Automatiseren

Als u sociale media-accounts beheert, kunt u het plaatsen automatiseren door gebruik te maken van bibliotheken zoals Tweepy (voor Twitter) en Instagram-API (voor Instagram) die automatisch berichten kunnen plaatsen.

Hieronder staat een voorbeeld met de Tweepy bibliotheek om een tweet te plaatsen:

import tweepy

def tweet(message):
    consumer_key = 'your_consumer_key'
    consumer_secret = 'your_consumer_secret'
    access_token = 'your_access_token'
    access_token_secret = 'your_access_token_secret'

    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)

    api = tweepy.API(auth)

    api.update_status(message)
    print("Tweet sent successfully!")

tweet("Hello, world!")

Deze script plaatst een tweet met de boodschap “Hallo, wereld!” op uw Twitter-account.

8. Automatiseren van Factuur Generatie

Als u regelmatig facturen genereert, kunt u dit automatiseren met bibliotheken zoals Fpdf, waarmee u PDF-facturen kunt maken:

from fpdf import FPDF

def create_invoice(client_name, amount):
    pdf = FPDF()
    pdf.add_page()
    pdf.set_font("Arial", size=12)
    pdf.cell(200, 10, txt="Invoice", ln=True, align='C')
    pdf.cell(200, 10, txt=f"Client: {client_name}", ln=True, align='L')
    pdf.cell(200, 10, txt=f"Amount: ${amount}", ln=True, align='L')
    pdf.output(f"{client_name}_invoice.pdf")
    print(f"Invoice for {client_name} created successfully!")

create_invoice('John Doe', 500)

Deze script maakt een eenvoudige factuur en slaat het op als een PDF.

9. Monitoren van Website Uptime

Python kan worden gebruikt om het monitoren van de uptime van websites te automatiseren met behulp van de requests bibliotheek, die periodiek kan controleren of een website online is of niet:

import requests
import time

def check_website(url):
    try:
        response = requests.get(url)
        if response.status_code == 200:
            print(f"Website {url} is up!")
        else:
            print(f"Website {url} returned a status code {response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"Error checking website {url}: {e}")

url = 'https://example.com' while True: check_website(url) time.sleep(3600) # Check every hour

Deze script controleert of de website online is en print de statuscode.

10. Automatisch Antwoorden op E-mails

Als u vaak e-mails ontvangt en een automatisch antwoord wilt instellen, gebruik dan de imaplib en smtplib bibliotheken om automatisch te antwoorden op e-mails:

import imaplib
import smtplib
from email.mime.text import MIMEText

def auto_reply():
    # Connect to email server
    mail = imaplib.IMAP4_SSL("imap.gmail.com")
    mail.login('[email protected]', 'yourpassword')
    mail.select('inbox')

    # Search for unread emails
    status, emails = mail.search(None, 'UNSEEN')

    if status == "OK":
        for email_id in emails[0].split():
            status, email_data = mail.fetch(email_id, '(RFC822)')
            email_msg = email_data[0][1].decode('utf-8')

            # Send auto-reply
            send_email("Auto-reply", "Thank you for your email. I'll get back to you soon.", '[email protected]')

def send_email(subject, body, to_email):
    sender_email = '[email protected]'
    sender_password = 'yourpassword'
    receiver_email = to_email

    msg = MIMEText(body)
    msg['From'] = sender_email
    msg['To'] = receiver_email
    msg['Subject'] = subject

    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
        server.login(sender_email, sender_password)
        server.sendmail(sender_email, receiver_email, msg.as_string())

auto_reply()

Deze script antwoord automatisch op ongelezen e-mails met een vooraf gedefinieerde boodschap.

11. Bestandsopruiming

Python biedt een effectieve manier om bestandsopruiming te automatiseren, vooral voor het verwijderen of verplaatsen van oude bestanden om georganiseerde mappen te behouden.

Hieronder staat een eenvoudig script dat bestanden verwijdert die ouder zijn dan een opgegeven aantal dagen met behulp van de os– en tijd-modules.

import aiofiles
import os
import asyncio
import time

async def clean_up(folder_path, days_old):
    now = time.time()
    cutoff_time = now - (days_old * 86400)
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.getmtime(file_path) < cutoff_time:
            await aiofiles.os.remove(file_path)
            print(f"Deleted {filename}")

folder = '/path/to/your/folder'
asyncio.run(clean_up(folder, 30))

12. Genereer wachtwoorden automatisch

Het maken van sterke, unieke wachtwoorden is essentieel voor beveiliging, en Python kan helpen bij het automatiseren van dit proces met behulp van de willekeurig-module.

Hieronder staat een eenvoudig script dat willekeurige wachtwoorden genereert van een opgegeven lengte, waarbij letters, cijfers en speciale tekens worden opgenomen om de beveiliging te verbeteren.

import random
import asyncio
import string

async def generate_password(length=12):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

async def generate_multiple_passwords(n, length=12):
    tasks = [generate_password(length) for _ in range(n)]
    passwords = await asyncio.gather(*tasks)
    print(passwords)

asyncio.run(generate_multiple_passwords(5))

13. Taaktracker/Herinnering

Het maken van een taaktracker of herinneringssysteem in Python kan worden bereikt met behulp van de datetime– en asyncio-modules.

import asyncio
from datetime import datetime

async def task_reminder(task_name, interval):
    while True:
        print(f"Reminder: {task_name} - {datetime.now()}")
        await asyncio.sleep(interval)

async def main():
    await asyncio.gather(
        task_reminder("Drink Water", 7200),  # Remind every 2 hours
        task_reminder("Take a Break", 3600)  # Remind every 1 hour
    )

asyncio.run(main())

Dit script stuurt een herinnering over de taak op een gepland tijdstip.

14. Dagelijkse rapporten automatisch genereren

Automatiseer dagelijkse rapporten door Python te gebruiken om gegevens te verzamelen en deze in een rapport te formatteren:

import datetime
import aiofiles
import asyncio

async def generate_report(data):
    today = datetime.date.today()
    filename = f"daily_report_{today}.txt"
    async with aiofiles.open(filename, 'w') as file:
        await file.write(f"Report for {today}\n")
        await file.write("\n".join(data))
    print(f"Report generated: {filename}")

data = ["Task 1: Completed", "Task 2: Pending", "Task 3: Completed"]
asyncio.run(generate_report(data))

15. Bewaak systeembronnen

Als je een systeembeheerder bent, kun je Python gebruiken om de systeembronnen zoals CPU- en geheugenverbruik te monitoren, met behulp van de psutil-bibliotheek.

import psutil

def monitor_resources():
    cpu_usage = psutil.cpu_percent(interval=1)
    memory_usage = psutil.virtual_memory().percent
    print(f"CPU Usage: {cpu_usage}%")
    print(f"Memory Usage: {memory_usage}%")

monitor_resources()

16. Batch Afbeeldingsformaat wijzigen

Als je afbeeldingen in bulk moet aanpassen, maakt Python het eenvoudig met de Pillow bibliotheek.

from PIL import Image
import os
import asyncio
from concurrent.futures import ProcessPoolExecutor

def resize_image(filename, width, height):
    img = Image.open(filename)
    img = img.resize((width, height))
    img.save(f"resized_{filename}")
    return f"Resized {filename}"

async def resize_images(folder_path, width, height):
    with ProcessPoolExecutor() as executor:
        loop = asyncio.get_event_loop()
        tasks = []
        for filename in os.listdir(folder_path):
            if filename.endswith('.jpg'):
                tasks.append(loop.run_in_executor(
                    executor, resize_image, os.path.join(folder_path, filename), width, height))
        results = await asyncio.gather(*tasks)
        print(results)

folder = '/path/to/your/images'
asyncio.run(resize_images(folder, 800, 600))

Dit script past alle .jpg afbeeldingen in een map aan naar de opgegeven afmetingen.

17. Automatiseren van Gegevensback-up naar de Cloud

Het automatiseren van back-ups naar clouddiensten zoals Google Drive is mogelijk met Python met behulp van bibliotheken zoals pydrive.

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

def backup_to_google_drive(file_path):
    gauth = GoogleAuth()
    gauth.LocalWebserverAuth()
    drive = GoogleDrive(gauth)
    file = drive.CreateFile({'title': 'backup_file.txt'})
    file.Upload()
    print("Backup uploaded successfully!")

file = '/path/to/your/file.txt' backup_to_google_drive(file)

18. Dagelijkse Herinneringen Maken

Het instellen van dagelijkse herinneringen is eenvoudig met de time module, die je elke 2 uur eraan herinnert om water te drinken:

import time

def water_reminder():
    while True:
        print("Time to drink water!")
        time.sleep(7200)  # Remind every 2 hours

water_reminder()

19. Automatiseren van Gegevensinvoer naar Excel

Als je vaak gegevens invoert in Excel, kan Python deze taak automatiseren met de openpyxl bibliotheek:

from openpyxl import Workbook

def create_excel(data):
    wb = Workbook()
    ws = wb.active
    for row in data:
        ws.append(row)
    wb.save('data.xlsx')
    print("Excel file created successfully!")

data = [
    ["Name", "Age", "City"],
    ["John", 30, "New York"],
    ["Anna", 25, "London"],
]
create_excel(data)

20. Automatiseren van Gegevensopschoning

Als je werkt met grote datasets, kan Python taken voor gegevensopschoning automatiseren, zoals het verwijderen van lege rijen uit een CSV-bestand:

import csv

def clean_csv(file_path):
    with open(file_path, 'r') as infile:
        reader = csv.reader(infile)
        rows = [row for row in reader if any(row)]
    
    with open(file_path, 'w', newline='') as outfile:
        writer = csv.writer(outfile)
        writer.writerows(rows)
    
    print("Empty rows removed from CSV")

file = '/path/to/your/data.csv' clean_csv(file)

21. Tekst Extractie uit Afbeeldingen

Python kan worden gebruikt om tekst uit afbeeldingen te extraheren met behulp van de pytesseract bibliotheek, wat handig kan zijn wanneer je gedrukte inhoud moet digitaliseren of tekst uit gescande documenten wilt halen.

from PIL import Image
import pytesseract

def extract_text_from_image(image_path):
    # Open the image file
    img = Image.open(image_path)
    
    # Use pytesseract to extract text
    text = pytesseract.image_to_string(img)
    
    return text

image_path = 'path_to_your_image.jpg'
extracted_text = extract_text_from_image(image_path)
print("Extracted Text:\n", extracted_text)
Conclusie

Dit zijn slechts enkele voorbeelden van wat Python kan doen om je dagelijkse taken te automatiseren. Met zijn eenvoudige syntaxis en krachtige bibliotheken kan Python bijna elke taak die je hem toevertrouwt aan.

Of je nu bestanden beheert, e-mails verstuurt of rapporten genereert, Python kan je tijd besparen en je productiviteit verbeteren. Begin vandaag nog met Python automatisering en laat het je dagelijkse taken afhandelen!

Source:
https://www.tecmint.com/python-automation-scripts/