Zoeken…


Syntaxis

  • $ 2to3 [-options] pad / naar / file.py

parameters

Parameter Beschrijving
bestandsnaam / mapnaam 2to3 accepteert een lijst met bestanden of mappen die moet worden getransformeerd als argument. De mappen worden recursief doorlopen voor Python-bronnen.
Optie Optie Beschrijving
-f FIX, --fix = FIX Geef de toe te passen transformaties op; standaard: alles. Lijst beschikbare transformaties met --list-fixes
-j PROCESSEN, --processen = PROCESSEN Voer 2to3 tegelijkertijd uit
-x NOFIX, --nofix = NOFIX Een transformatie uitsluiten
-l, --list-fixes Lijst met beschikbare transformaties
-p, - print-functie Wijzig de grammatica zodat print() als een functie wordt beschouwd
-v, --verbose Meer uitgebreide output
--no-diffs Voer geen diffs van de refactoring uit
-w Schrijf gewijzigde bestanden terug
-n, --nobackups Maak geen back-ups van gewijzigde bestanden
-o OUTPUT_DIR, --output-dir = OUTPUT_DIR Plaats uitvoerbestanden in deze map in plaats van invoerbestanden te overschrijven. Vereist de vlag -n , omdat back-upbestanden niet nodig zijn wanneer de invoerbestanden niet worden gewijzigd.
-W, - schrijven-onveranderde-bestanden Schrijf uitvoerbestanden zelfs als er geen wijzigingen nodig waren. Handig met -o zodat een complete bronboom wordt vertaald en gekopieerd. Impliceert -w .
--add-suffix = ADD_SUFFIX Geef een tekenreeks op die aan alle uitvoerbestandsnamen moet worden toegevoegd. Vereist -n indien niet leeg. Bijvoorbeeld: --add-suffix='3' genereert .py3 bestanden.

Opmerkingen

De 2to3-tool is een python-programma dat wordt gebruikt om de code geschreven in Python 2.x om te zetten in Python 3.x-code. De tool leest de Python 2.x-broncode en past een aantal fixers toe om deze om te zetten in een geldige Python 3.x-code.

De 2to3-tool is beschikbaar in de standaardbibliotheek als lib2to3 die een uitgebreide set fixers bevat die bijna alle code aankan. Aangezien lib2to3 een generieke bibliotheek is, is het mogelijk om uw eigen fixers voor 2to3 te schrijven.

Basisgebruik

Overweeg de volgende Python2.x-code. Sla het bestand op 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 het bovenstaande bestand zijn er verschillende incompatibele regels. De methode raw_input() is vervangen door input() in Python 3.x en print is niet langer een statement, maar een functie. Deze code kan worden geconverteerd naar Python 3.x-code met behulp van de tool 2to3.

Unix

$ 2to3 example.py

ramen

> path/to/2to3.py example.py

Als u de bovenstaande code uitvoert, worden de verschillen ten opzichte van het oorspronkelijke bronbestand uitgevoerd, zoals hieronder wordt weergegeven.

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

De wijzigingen kunnen worden teruggeschreven naar het bronbestand met de vlag -w. Er wordt een back-up gemaakt van het oorspronkelijke bestand met de naam example.py.bak , tenzij de vlag -n wordt gegeven.

Unix

$ 2to3 -w example.py

ramen

> path/to/2to3.py -w example.py

Het bestand example.py is nu omgezet van Python 2.x naar Python 3.x-code.

Eenmaal voltooid, bevat example.py de volgende geldige 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow