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

Python 2.x 2.0
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:

Python 3.x 3.0
def greet(name):
    print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow