Python - Scripting

Python: Convertire il contenuto di un file di testo in maiuscolo o minuscolo

In questo articolo vedremo come creare un piccolo ma potente script Python che accetta parametri direttamente dal terminale per convertire il contenuto di un file in modalità upper (maiuscolo) o lower (minuscolo).

import argparse
import sys

def elabora_file(input_file, output_file, modalita):
    try:
        # Apertura del file originale in lettura
        with open(input_file, 'r', encoding='utf-8') as f:
            contenuto = f.read()

        # Trasformazione in base al parametro
        if modalita == 'upper':
            risultato = contenuto.upper()
        else:
            risultato = contenuto.lower()

        # Scrittura nel file di destinazione
        with open(output_file, 'w', encoding='utf-8') as f:
            f.write(risultato)
        
        print(f"Operazione completata: '{output_file}' creato con successo in modalità {modalita}.")

    except FileNotFoundError:
        print(f"Errore: Il file '{input_file}' non è stato trovato.")
    except Exception as e:
        print(f"Si è verificato un errore: {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Converte il testo di un file in UPPER o lower case.")
    
    # Parametri obbligatori
    parser.add_argument("fileoriginale", help="Percorso del file da leggere")
    parser.add_argument("filedestinazione", help="Percorso del file da creare")
    
    # Scelta tra upper e lower (con conversione automatica in minuscolo per il confronto)
    parser.add_argument("scelta", type=str.lower, choices=['upper', 'lower'], 
                        help="Scegli tra 'upper' o 'lower'")

    args = parser.parse_args()

    elabora_file(args.fileoriginale, args.filedestinazione, args.scelta)

Una volta salvato lo script con il nome “convertitxt.py” è possibile testarlo da linea di comando. La sintassi è molto semplice:

python convertitxt.py <FileOriginale> <FileDestinazione> <Scelta>

Se si vuole che il contenuto sia interamente in maiuscolo, digitare

python convertitxt.py fileoriginale.txt upper.txt upper

Se invece si vuole che il contenuto sia interamente in minuscolo, digitare

python convertitxt.py fileoriginale.txt lower.txt lower

Nei due esempi FileOriginale e FileDestinazione si trovano nella stessa directory in cui abbiamo salvato ed eseguito lo script, ma possiamo specificare il path completo delle directory, ad esempio

python convertitxt.py /input/fileoriginale.txt /output/lower.txt lower