Python Language
2to3 gereedschap
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
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:
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)