Il tuo server affoga in file temporanei che nessuno pulisce? Ogni giorno lo stesso backup manuale che dimentichi appena arriva un cliente? Lo scheduling è un misto di tentativi, allarmi ignorati e dimenticanze? Bene, hai trovato la soluzione.
Noi, di Meteora Web, abbiamo costruito decine di automatismi per PMI italiane. Veniamo anche dalla contabilità: sappiamo che un backup dimenticato costa più di un server. E che ripetere a mano operazioni come rinominare report, spostare file di magazzino o inviare email periodiche è tempo che potresti dedicare a far crescere il business.
In questa guida operativa vedrai come usare Python — con la libreria standard pathlib e lo scheduler di sistema cron — per automatizzare la gestione dei file e le attività periodiche. Niente piattaforme esterne, niente canoni mensili. Script che scrivi una volta e funzionano per anni.
Perché Python per l'automazione nelle PMI rispetto ad altri strumenti?
Potresti usare Bash, PowerShell o uno strumento no-code come Make. Ma Python ha tre vantaggi concreti per una PMI:
- Leggibilità: uno script Python lo capisce anche il collega che non è sviluppatore di professione. Lo modifichi senza paura.
- Portabilità : stesso script su Linux, Windows, macOS. Con pathlib non devi preoccuparti di slash e backslash.
- Ecosistema: se domani l'automazione deve inviare un'email, connettersi a un'API o leggere un database, Python ha la libreria già pronta.
Noi abbiamo usato Python per automatizzare il download dei report giornalieri di vendita da un ERP, rinominarli con la data e caricarli su un NAS. Un cliente e-commerce aveva immagini da diversi MB: con uno script Python e pathlib abbiamo ridotto il peso del 60% senza perdita di qualità, schedulando l'elaborazione nelle ore notturne.
Sponsored Protocol
La domanda giusta non è “funziona?” ma “quanto mi costa non farlo?”
Cosa rende pathlib la scelta migliore per gestire i file?
Per anni gli sviluppatori Python hanno usato os.path con stringhe e backslash incollati. Risultato: codice fragile, errori su Windows, percorsi scritti a mano. Pathlib (introdotto in Python 3.4) cambia tutto: ogni percorso è un oggetto, con metodi intuitivi e operazioni sicure.
Operazioni fondamentali con pathlib
Vediamo i comandi che userai nel 90% delle automazioni:
from pathlib import Path
# Percorso base
base = Path("/var/log/mio_client")
# Listare solo file .log
log_files = list(base.glob("*.log"))
# Leggere contenuto (con encoding sicuro)
for file in log_files:
testo = file.read_text(encoding="utf-8")
if "ERRORE" in testo:
print(f"Trovato errore in {file.name}")
# Creare directory se non esiste
backup_dir = base / "backup"
backup_dir.mkdir(parents=True, exist_ok=True)
# Copiare file (pathlib non ha copy built-in, ma usiamo shutil)
import shutil
shutil.copy2(file, backup_dir / file.name)
# Eliminare file più vecchi di 7 giorni
import time
soglia = time.time() - 7 * 86400
for file in backup_dir.iterdir():
if file.is_file() and file.stat().st_mtime < soglia:
file.unlink()Errore comune: usare os.listdir() e costruire i percorsi a mano. Con pathlib non serve: Path.iterdir() ti dà già oggetti Path.
Sponsored Protocol
Quando su un server si è rotto il rinnovo automatico dei certificati SSL, abbiamo scritto uno script con pathlib che controllava la scadenza dei file .pem e, se mancavano meno di 30 giorni, lanciava certbot. Schedulato con cron, ha risolto il problema senza far andare offline il cliente.
Come programmare script Python con Cron su Linux?
Cron è lo scheduler storico di Unix. Funziona con un file di configurazione (crontab) dove ogni riga specifica minuto, ora, giorno, mese, giorno della settimana e comando. Perfetto per script Python.
Struttura di una riga crontab
# Minuto Ora Giorno Mese GiornoSett Comando
30 2 * * * /usr/bin/python3 /home/meteora/script/backup.pyI cinque campi si leggono: “esegui ogni giorno alle 2:30”. Puoi usare asterischi (tutti), intervalli (1-5), step (*/15 ogni 15 minuti) e liste (1,15).
Sponsored Protocol
Comandi crontab pratici
crontab -e— modifica il crontab dell'utente correntecrontab -l— lista i job attivicrontab -r— rimuove tutti i job (attenzione!)
Regola d'oro: usa percorsi assoluti sia per l'interprete Python che per lo script. Cron non ha lo stesso PATH della tua shell.
# SBAGLIATO (non trova python)
0 9 * * * python script.py
# CORRETTO
0 9 * * * /usr/bin/python3 /home/meteora/script/report_giornaliero.pyEsempio reale: backup notturno dei file di magazzino
Un nostro cliente ha un negozio di abbigliamento con file CSV di inventario. Voleva una copia automatica ogni notte.
Script Python:
from pathlib import Path
import shutil
from datetime import datetime
sorgente = Path("/var/dati/magazzino")
destinazione = Path("/mnt/nas/backup_magazzino")
oggi = datetime.now().strftime("%Y-%m-%d")
dest_oggi = destinazione / oggi
dest_oggi.mkdir(parents=True, exist_ok=True)
for file in sorgente.glob("*.csv"):
shutil.copy2(file, dest_oggi / file.name)
print(f"Backup {len(list(sorgente.glob('*.csv')))} file completato.")Poi abbiamo aggiunto nel crontab dell'utente:
Sponsored Protocol
0 3 * * * /usr/bin/python3 /home/meteora/backup_magazzino.py >> /var/log/backup_magazzino.log 2>&1Il redirect >> /var/log/... 2>&1 salva output ed errori in un file. Se qualcosa va storto, lo vedi dal log.
Quali errori comuni evitare quando unisci pathlib e cron?
Abbiamo visto decine di script “quasi funzionanti”. Ecco i problemi più frequenti:
- Percorso relativo nello script: Cron esegue dalla home dell'utente, non dalla cartella dello script. Soluzione: usa
Path(__file__).resolve().parentper ottenere la directory dello script. - Variabili d'ambiente mancanti: Se lo script usa variabili (es. DB password), caricale all'interno o usa un file .env. Non dare per scontato che cron le erediti.
- Permessi insufficienti: Lo script lanciato da cron potrebbe non avere accesso a cartelle di sistema. Testalo manualmente con lo stesso utente del crontab.
- Log non gestiti: Uno script silenzioso è una bomba a orologeria. Scrivi sempre output su file con timestamp.
# Esempio di log minimale
import logging
logging.basicConfig(filename="/var/log/automazione.log", level=logging.INFO,
format='%(asctime)s %(message)s')
logging.info("Script avviato")
# ...
logging.info("Script completato con successo")Posizione netta: La sicurezza nelle PMI italiane è sistematicamente sottovalutata. Se lo script tocca dati sensibili, usa file di configurazione con permessi 600 e non hard-coded le credenziali.
Sponsored Protocol
Cosa fare adesso — implementa la tua prima automazione in 30 minuti
Non leggere e basta. Metti in pratica subito:
- Identifica un'operazione ripetitiva: che fai ogni giorno a mano? Rinominare file, spostare download, pulire temporanei?
- Scrivi uno script Python con pathlib che faccia quell'operazione. Usa
Path.glob(),shutil.copy2(),Path.unlink(). - Aggiungi logging: anche solo una riga su file con la data e il numero di file elaborati.
- Testa manualmente: esegui lo script dalla shell con l'utente che avrà il crontab.
- Schedula con cron:
crontab -ee aggiungi la riga con percorso assoluto e redirect del log. - Verifica il log il giorno dopo: apri il file di log e controlla che tutto sia andato a buon fine.
Noi, di Meteora Web, lo facciamo ogni giorno per i nostri clienti. Se ti serve una mano a impostare il primo script o a ragionare sulla convenienza economica dell'automazione, parti dalla nostra guida pillar su Python per Sviluppatori e contattaci.
Un sito si misura in fatturato, non in complimenti. Un'automazione si misura in ore recuperate.