Python Language
2to3 verktyg
Sök…
Syntax
- $ 2to3 [-options] sökväg / till / file.py
parametrar
Parameter | Beskrivning |
---|---|
filnamn / katalognamn | 2to3 accepterar en lista över filer eller kataloger som ska omvandlas som argument. Katalogerna är rekursivt korsade för Python-källor. |
Alternativ | Alternativ Beskrivning |
-f FIX, --fix = FIX | Ange transformationer som ska tillämpas; standard: alla. Lista tillgängliga transformationer med - --list-fixes |
-j PROCESSES, - processer = PROCESSES | Kör 2to3 samtidigt |
-x NOFIX, --nofix = NOFIX | Uteslut en omvandling |
-l, - list-fixar | Lista tillgängliga transformationer |
-p, --print-funktion | Ändra grammatiken så att print() betraktas som en funktion |
-v, --verbose | Mer ordinär utgång |
--no-diffar | Ge inte ut skillnader från refactoring |
-w | Skriv tillbaka modifierade filer |
-n, - nackackar | Skapa inte säkerhetskopior av modifierade filer |
-o OUTPUT_DIR, --output-dir = OUTPUT_DIR | Placera utdatafiler i den här katalogen istället för att skriva över inmatningsfiler. Kräver -n flaggan, eftersom säkerhetskopieringsfiler är onödiga när ingångsfilerna inte ändras. |
-W, - skriv-oförändrade-filer | Skriv utmatningsfiler till och med, det behövs inga ändringar. Användbart med -o så att ett komplett källträd översätts och kopieras. Implicerar -w . |
--add-suffix = ADD_SUFFIX | Ange en sträng som ska bifogas till alla utgångsfilnamn. Kräver -n om inte tom. Ex .: --add-suffix='3' genererar .py3 filer. |
Anmärkningar
Verktyget 2to3 är ett Python-program som används för att konvertera koden skriven i Python 2.x till Python 3.x-kod. Verktyget läser Python 2.x källkod och tillämpar en serie fixare för att omvandla den till giltig Python 3.x-kod.
Verktyget 2to3 finns i standardbiblioteket som lib2to3 som innehåller en rik uppsättning fixers som kommer att hantera nästan all kod. Eftersom lib2to3 är ett generiskt bibliotek är det möjligt att skriva egna fixers för 2to3.
Grundläggande användning
Tänk på följande Python2.x-kod. Spara filen som example.py
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)
I ovanstående fil finns det flera inkompatibla rader. raw_input()
har ersatts med input()
i Python 3.x och print
är inte längre ett uttalande utan en funktion. Denna kod kan konverteras till Python 3.x-kod med verktyget 2to3.
Unix
$ 2to3 example.py
Windows
> path/to/2to3.py example.py
Att köra ovanstående kod kommer att producera skillnaderna mot den ursprungliga källfilen som visas nedan.
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
Ändringarna kan skrivas tillbaka till källfilen med flaggan -w. En säkerhetskopia av den ursprungliga filen som heter example.py.bak
skapas, såvida inte -n-flaggan anges.
Unix
$ 2to3 -w example.py
Windows
> path/to/2to3.py -w example.py
Nu example.py
filen har konverterats från Python 2.x till Python 3.x kod.
När den är klar kommer example.py
att innehålla följande giltiga Python3.x-kod:
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)