Python Language
2to3 Werkzeug
Suche…
Syntax
- $ 2to3 [-options] Pfad / to / file.py
Parameter
Parameter | Beschreibung |
---|---|
Dateiname / Verzeichnisname | 2to3 akzeptiert eine Liste von Dateien oder Verzeichnissen, die als Argument umgewandelt werden sollen. Die Verzeichnisse werden rekursiv für Python-Quellen durchlaufen. |
Möglichkeit | Option Beschreibung |
-f FIX, --fix = FIX | Geben Sie die anzuwendenden Transformationen an. Standard: Alle. Liste der verfügbaren Transformationen mit --list-fixes |
-j PROZESSE, --processes = PROZESSE | Führen Sie 2to3 gleichzeitig aus |
-x NOFIX, --nofix = NOFIX | Eine Transformation ausschließen |
-l, --list-fixes | Liste der verfügbaren Transformationen |
-p, --print-Funktion | Ändern Sie die Grammatik so, dass print() als Funktion betrachtet wird |
-v, --verbose | Ausführlichere Ausgabe |
--keine Unterschiede | Geben Sie keine Differenzen des Refactorings aus |
-w | Schreibe modifizierte Dateien zurück |
-n, --nobackups | Erstellen Sie keine Sicherungen von geänderten Dateien |
-o OUTPUT_DIR, --output-dir = OUTPUT_DIR | Platzieren Sie die Ausgabedateien in diesem Verzeichnis, anstatt die Eingabedateien zu überschreiben. Erfordert das Flag -n , da Sicherungsdateien nicht erforderlich sind, wenn die Eingabedateien nicht geändert werden. |
-W, --write-unverändert-Dateien | Ausgabedateien schreiben, selbst wenn keine Änderungen erforderlich waren. Nützlich bei -o damit ein vollständiger Quellbaum übersetzt und kopiert wird. Impliziert -w . |
--add-Suffix = ADD_SUFFIX | Geben Sie eine Zeichenfolge an, die an alle Ausgabedateinamen angehängt werden soll. Benötigt -n wenn es nicht leer ist. Beispiel: --add-suffix='3' generiert .py3 Dateien. |
Bemerkungen
Das 2to3-Tool ist ein Python-Programm, mit dem der in Python 2.x geschriebene Code in Python 3.x-Code konvertiert wird. Das Tool liest den Quellcode von Python 2.x und wendet eine Reihe von Fixierern an, um diesen in gültigen Python 3.x-Code umzuwandeln.
Das 2to3-Tool ist in der Standardbibliothek als lib2to3 verfügbar. Es enthält einen umfangreichen Satz Fixierer, der nahezu den gesamten Code verarbeiten kann. Da es sich bei lib2to3 um eine generische Bibliothek handelt, können Sie Ihre eigenen Fixer für 2to3 schreiben.
Grundlegende Verwendung
Betrachten Sie den folgenden Python2.x-Code. Speichern Sie die Datei als example.py
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)
In der obigen Datei befinden sich mehrere inkompatible Zeilen. Die Methode raw_input()
wurde in Python 3.x durch input()
und print
ist keine Anweisung mehr, sondern eine Funktion. Dieser Code kann mit dem 2to3-Tool in Python 3.x-Code konvertiert werden.
Unix
$ 2to3 example.py
Windows
> path/to/2to3.py example.py
Wenn Sie den obigen Code ausführen, werden die Unterschiede zur ursprünglichen Quelldatei ausgegeben (siehe unten).
RefactoringTool: Skipping implicit fixer: buffer
RefactoringTool: Skipping implicit fixer: idioms
RefactoringTool: Skipping implicit fixer: set_literal
RefactoringTool: Skipping implicit fixer: ws_comma
RefactoringTool: Refactored example.py
--- example.py (original)
+++ example.py (refactored)
@@ -1,5 +1,5 @@
def greet(name):
- print "Hello, {0}!".format(name)
-print "What's your name?"
-name = raw_input()
+ print("Hello, {0}!".format(name))
+print("What's your name?")
+name = input()
greet(name)
RefactoringTool: Files that need to be modified:
RefactoringTool: example.py
Die Änderungen können mit der Markierung -w in die Quelldatei zurückgeschrieben werden. Eine Sicherungskopie der Originaldatei namens example.py.bak
wird erstellt, sofern das Flag -n nicht angegeben ist.
Unix
$ 2to3 -w example.py
Windows
> path/to/2to3.py -w example.py
Jetzt wurde die Datei example.py
von Python 2.x in Python 3.x-Code konvertiert.
Nach Beendigung enthält example.py
den folgenden gültigen Python3.x-Code:
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)