
Codice sorgente del libro "Violent Python" di TJ O'Connor. Il codice è stato completamente convertito in Python 3, riformattato per essere conforme agli standard PEP8 e rifattorizzato per eliminare problemi di dipendenza relativi all'implementazione di librerie deprecate.
Codice sorgente per il libro "Violent Python" di TJ O'Connor. Il codice è stato completamente convertito a Python 3, riformattato per conformarsi agli standard PEP8 e rifattorizzato per eliminare problemi di dipendenza derivanti dall'implementazione di librerie deprecate.
Una conversione simile a questa è stata resa disponibile da me sul codice sorgente del libro "Black Hat Python" di Justin Seitz. Dai un'occhiata qui se non l'hai ancora fatto.
Crea semplicemente una nuova directory (DIR) per il progetto, crea un nuovo ambiente virtuale o venv (consigliato), clona questo repository usando git clone e installa i requisiti usando pip install.
user@host:~/DIR$ git clone https://github.com/EONRaider/violent-python3
user@host:~/DIR$ python3 -m venv venv
user@host:~/DIR$ source venv/bin/activate
(venv) user@host:~/DIR$ pip install -r requirements.txt
optparse, ora deprecata, è stata sostituita con argparse in tutto il codice sorgente. Tutto il parsing degli argomenti ora è contenuto nell'ambito di esecuzione __main__ per ogni file. Tutti gli argomenti CLI che erano obbligatori per l'esecuzione degli script ma erano trattati come opzionali nel codice originale sono ora implementati come posizionali. Un prompt di usage è ora disponibile per tutti gli script che usano argparse fornendo l'argomento -h alla CLI. Lasciare le responsabilità sia di boundary che di controller al parser CLI non è certamente la scelta migliore in termini di architettura software, ma è stato lasciato così per la necessità di conformarsi all'intento del programmatore originale.PEP 8: E722 do not use bare except sono state rifattorizzate con clausole di eccezione più specifiche.close() sugli oggetti file/database aperti. Per questo motivo tutte le istanze di manipolazione di file e database sono state rifattorizzate utilizzando context manager.# -*- coding: utf-8 -*-) è stato eliminato a causa della standardizzazione di UTF-8 come codifica predefinita per Python 3 (in sostituzione di ASCII da Python 2).