giovedì 23 ottobre 2025

Corso di Python: 10 – Automazione e Scripting

10 Automazione e Scripting

Obiettivi didattici:

  • Automatizzare compiti ripetitivi.

  • Interagire con il sistema operativo usando moduli Python (os, shutil).

  • Creare uno script che organizza file in una cartella in base al tipo.


1. Introduzione all’automazione

Python può essere usato per automatizzare operazioni ripetitive, come:

  • Rinominare file in massa.

  • Spostare o copiare documenti.

  • Leggere, modificare o analizzare dati.

Vantaggi: risparmio di tempo, riduzione errori, ripetibilità.


2. Interazione con il sistema operativo

2.1 Modulo os

Fornisce funzioni per interagire con il filesystem e l’ambiente:

import os

# Mostra la directory corrente
print(os.getcwd())

# Lista dei file nella cartella
files = os.listdir(".")
print(files)

# Crea una nuova cartella
os.mkdir("cartella_test")

# Rinomina un file
os.rename("vecchio.txt", "nuovo.txt")

2.2 Modulo shutil

Permette operazioni avanzate su file e cartelle:

import shutil

# Copia un file
shutil.copy("documento.txt", "backup/documento.txt")

# Sposta un file
shutil.move("file.txt", "destinazione/file.txt")

# Cancella una cartella con tutto il contenuto
shutil.rmtree("cartella_da_cancellare")

3. Esercizio pratico: organizzazione automatica dei file

Obiettivo: spostare i file in sottocartelle in base all’estensione (es. immagini, documenti, PDF).

import os
import shutil

# Cartella da organizzare
cartella = "C:/Utenti/Nome/Downloads"

# Sottocartelle
tipi = {
    "Immagini": [".jpg", ".jpeg", ".png", ".gif"],
    "Documenti": [".pdf", ".docx", ".txt"],
    "Audio": [".mp3", ".wav"],
    "Video": [".mp4", ".avi"]
}

# Creazione sottocartelle se non esistono
for nome in tipi:
    path = os.path.join(cartella, nome)
    if not os.path.exists(path):
        os.mkdir(path)

# Organizzazione dei file
for file in os.listdir(cartella):
    percorso_file = os.path.join(cartella, file)
    if os.path.isfile(percorso_file):
        estensione = os.path.splitext(file)[1].lower()
        for categoria, estensioni in tipi.items():
            if estensione in estensioni:
                destinazione = os.path.join(cartella, categoria, file)
                shutil.move(percorso_file, destinazione)
                print(f"Spostato {file} in {categoria}")

Funzionamento:

  1. Definisce la cartella da organizzare.

  2. Crea sottocartelle per categoria se non esistono.

  3. Controlla ogni file e lo sposta nella cartella corrispondente all’estensione.


4. Estensioni pratiche

  • Aggiungere nuove categorie di file (es. archivi .zip, .rar).

  • Rinominare i file secondo uno schema (es. data + nome).

  • Creare un log dei file spostati in un file .txt.


5. Test rapido

  1. Come controlli se un percorso è un file o una cartella?
    Risposta: os.path.isfile(percorso) o os.path.isdir(percorso)

  2. Come si estrae l’estensione di un file?
    Risposta: os.path.splitext(nome_file)[1]

  3. Quale modulo permette di copiare o spostare file facilmente?
    Risposta: shutil

  4. Come creare una cartella se non esiste?
    Risposta: os.mkdir(nome_cartella) dopo aver controllato con os.path.exists(nome_cartella)


6. Attività pratica

  1. Creare uno script che rinomini tutti i file con spazi sostituendo gli spazi con underscore _.

  2. Creare un backup di tutti i file PDF in una cartella separata.

  3. Automatizzare il download di immagini da un URL (usando requests o urllib) e salvarle in una cartella dedicata.

Nessun commento:

Posta un commento

Corso Fondamenti di Informatica e Reti: 6 Reti di computer e Internet

Reti di computer e Internet Introduzione Prova a pensare alla vita quotidiana senza reti informatiche: niente messaggi WhatsApp, niente m...