21 Script Python Semplici Che Automatizzeranno i Tuoi Compiti Quotidiani

Come qualcuno che ha trascorso oltre un decennio nel mondo della programmazione, ho imparato che automatizzare compiti ripetitivi può far risparmiare una quantità significativa di tempo e sforzi.

Python, con la sua sintassi semplice e le potenti librerie, è uno dei migliori linguaggi di programmazione per creare script di automazione. Sia che tu sia un programmatore o qualcuno che cerca di semplificare le attività quotidiane, Python ha strumenti che possono aiutarti.

In questo articolo, condividerò 21 script Python che ho utilizzato per automatizzare vari compiti. Questi script sono perfetti per chiunque voglia risparmiare tempo e migliorare l’efficienza nella propria routine lavorativa.

1. Rinominare file in blocco

Rinominare i file uno per uno può essere un compito dispendioso in termini di tempo, ma con Python puoi facilmente automatizzare questo utilizzando il modulo os.

Ecco uno script semplice che rinomina più file in una cartella in base a un modello specificato:

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')

Questo script cerca file che contengono old_name_part nei loro nomi e lo sostituisce con new_name_part.

2. Backup automatico dei file

Sappiamo tutti quanto sia importante eseguire regolarmente il backup dei file, e questo compito può essere facilmente automatizzato utilizzando il modulo shutil di Python.

Questo script copierà tutti i file da una directory a un’altra per scopi di backup:

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)

Puoi pianificare questo script per essere eseguito quotidianamente utilizzando strumenti di pianificazione delle attività come cron (Linux) o Task Scheduler (Windows).

3. Scaricare file da Internet

Se scarichi frequentemente file da internet, puoi automatizzare questo compito utilizzando la libreria aiohttp.

Ecco un semplice script per scaricare file da URL:

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())

Questo script scarica il file dall’URL specificato e lo salva nella cartella da te indicata.

4. Automazione dei report via email

Se sei tenuto a inviare report via email regolarmente, puoi automatizzarlo utilizzando la libreria smtplib, che ti consente di inviare email facilmente da un account Gmail:

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]')

Questo script invierà una semplice email con un oggetto e un corpo a un destinatario specificato. Assicurati di abilitare le app meno sicure in Gmail se utilizzi questo metodo.

5. Task Scheduler (Automazione delle attività)

Pianificare attività può essere fatto facilmente utilizzando la libreria schedule, che ti consente di automatizzare compiti come inviare un’email o eseguire uno script di backup in orari specifici:

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)

Questo script continuerà a essere eseguito e attiverà attività all’orario specificato, in questo caso, 10:00 AM ogni giorno.

6. Web Scraping per la raccolta di dati

Utilizzare aiohttp per richieste HTTP asincrone invece della libreria sincrona requests può rendere il web scraping più efficiente.

Questo esempio recupera più pagine in parallelo.

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. Automazione dei Post sui Social Media

Se gestisci account sui social media, puoi automatizzare i post utilizzando librerie come Tweepy (per Twitter) e Instagram-API (per Instagram) che ti permettono di postare automaticamente.

Di seguito è riportato un esempio che utilizza la libreria Tweepy per postare un tweet:

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!")

Questo script pubblica un tweet con il messaggio “Ciao, mondo!” sul tuo account Twitter.

8. Automazione della Generazione di Fatture

Se generi fatture regolarmente, puoi automatizzarlo utilizzando librerie come Fpdf, che creerà fatture in PDF:

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)

Questo script crea una semplice fattura e la salva come PDF.

9. Monitoraggio del Tempo di Attività del Sito Web

Python può essere utilizzato per automatizzare il monitoraggio del tempo di attività del sito web utilizzando la libreria requests, che può controllare periodicamente se un sito web è online o meno:

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

Questo script controlla se il sito web è online e stampa il codice di stato.

10. Risposta Automatica alle Email

Se ricevi spesso email e vuoi impostare una risposta automatica, utilizza le librerie imaplib e smtplib per rispondere automaticamente alle email:

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()

Questo script risponde automaticamente alle email non lette con un messaggio predefinito.

11. Pulizia dei File

Python offre un modo efficace per automatizzare la pulizia dei file, in particolare per eliminare o spostare file vecchi per mantenere directory organizzate.

Di seguito è riportato uno script semplice che elimina i file più vecchi di un numero specificato di giorni utilizzando i moduli os e time.

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. Generazione Automatica di Password

Creare password forti e uniche è essenziale per la sicurezza, e Python può aiutare ad automatizzare questo processo utilizzando il modulo random.

Di seguito è riportato uno script semplice che genera password casuali di una lunghezza specificata, incorporando lettere, numeri e caratteri speciali per migliorare la sicurezza.

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. Tracker/Ricordatore di Attività

Creare un sistema di tracciamento delle attività o di promemoria in Python può essere realizzato utilizzando i moduli datetime e asyncio.

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())

Questo script invia un promemoria riguardo al compito a un orario programmato.

14. Generazione Automatica di Report Giornalieri

Automatizza i report giornalieri utilizzando Python per raccogliere dati e formattarli in un report:

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. Monitoraggio delle Risorse di Sistema

Se sei un amministratore di sistema, puoi utilizzare Python per monitorare le risorse del tuo sistema come l’utilizzo della CPU e della memoria, con l’aiuto della libreria psutil.

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. Ridimensionamento Batch delle Immagini

Se hai bisogno di ridimensionare immagini in blocco, Python lo rende facile con la libreria Pillow.

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))

Questo script ridimensiona tutte le immagini .jpg in una cartella alle dimensioni specificate.

17. Automazione del Backup Dati nel Cloud

L’automazione dei backup su servizi cloud come Google Drive è possibile con Python utilizzando librerie come 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. Creazione di Promemoria Giornalieri

Impostare promemoria giornalieri è facile con il modulo time, che ti ricorderà di bere acqua ogni 2 ore:

import time

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

water_reminder()

19. Automazione dell’Inserimento Dati in Excel

Se inserisci frequentemente dati in Excel, Python può aiutarti ad automatizzare questo compito con la libreria openpyxl:

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. Automazione della Pulizia dei Dati

Se lavori con grandi set di dati, Python può automatizzare i compiti di pulizia dei dati, che rimuoveranno righe vuote da un file CSV:

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. Estrazione di Testo da Immagini

Python può essere utilizzato per estrarre testo da immagini utilizzando la libreria pytesseract, che può essere utile quando hai bisogno di digitalizzare contenuti stampati o estrarre testo da documenti scansionati.

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)
Conclusione

Questi sono solo alcuni esempi di ciò che Python può fare per automatizzare le tue attività quotidiane. Con la sua sintassi semplice e le sue potenti librerie, Python può gestire quasi qualsiasi compito tu gli affidi.

Che tu stia gestendo file, inviando email o generando report, Python può risparmiarti tempo e migliorare la tua produttività. Quindi, inizia oggi con l’automazione in Python e lascia che si occupi dei tuoi compiti quotidiani!

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