
Quellcode für das Buch "Violent Python" von TJ O'Connor. Der Code wurde vollständig zu Python 3 konvertiert, gemäß PEP8-Standards neu formatiert und umstrukturiert, um Abhängigkeitsprobleme durch die Implementierung veralteter Bibliotheken zu beseitigen.
Quellcode für das Buch »Violent Python« von TJ O’Connor. Der Code wurde vollständig nach Python 3 konvertiert, gemäß PEP8-Standards neu formatiert und refaktorisiert, um Abhängigkeitsprobleme durch die Verwendung veralteter Bibliotheken zu beseitigen.
Eine ähnliche Konvertierung habe ich selbst für den Quellcode des Buches »Black Hat Python« von Justin Seitz bereitgestellt. Schauen Sie sich diese hier an, falls Sie es noch nicht getan haben.
Erstellen Sie einfach ein neues Verzeichnis (DIR) für das Projekt, richten Sie eine virtuelle Umgebung oder venv dafür ein (empfohlen), klonen Sie dieses Repository mit git clone und installieren Sie die Abhängigkeiten mit 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 wurde im gesamten Quellcode durch argparse ersetzt. Die gesamte Argumentanalyse befindet sich nun im __main__-Ausführungsbereich jeder Datei. Alle CLI-Argumente, die für die Ausführung der Skripte zwingend erforderlich waren, aber im Originalcode als optional behandelt wurden, werden nun als Positionsargumente implementiert. Ein usage-Prompt ist nun für alle Skripte verfügbar, die argparse verwenden, indem das Argument -h an die CLI übergeben wird. Die Verantwortlichkeiten sowohl des Boundary- als auch des Controller-Objekts an den CLI-Parser zu delegieren, ist definitiv nicht die beste Wahl in Bezug auf die Softwarearchitektur, wurde aber aufgrund der Notwendigkeit der Übereinstimmung mit der Absicht des ursprünglichen Programmierers so belassen.PEP 8: E722 do not use bare except wurden mit spezifischeren Ausnahmeklauseln umgestaltet.close()-Methode für die geöffneten Datei-/Datenbankobjekte aufzurufen. Aus diesem Grund wurden alle Instanzen der Datei- und Datenbankmanipulation durch die Verwendung von Kontextmanagern umgestaltet.# -*- coding: utf-8 -*-), wurde aufgrund der Standardisierung von UTF-8 als Standardkodierung für Python 3 (Ersatz von ASCII aus Python 2) eliminiert.