Python Language
Narzędzie 2to3
Szukaj…
Składnia
- $ 2to3 [-options] ścieżka / do / pliku.py
Parametry
Parametr | Opis |
---|---|
nazwa_pliku / nazwa_katalogu | 2to3 przyjmuje listę plików lub katalogów, które mają zostać przekształcone jako argument. Katalogi są rekurencyjnie przechodzące przez źródła Pythona. |
Opcja | Opcja Opis |
-f FIX, --fix = FIX | Określ transformacje do zastosowania; domyślnie: wszystkie. Wyświetl dostępne transformacje za pomocą --list-fixes |
-j PROCESY, --processes = PROCESY | Uruchom 2to3 jednocześnie |
-x NOFIX, --nofix = NOFIX | Wyklucz transformację |
-l, --list-fixes | Wyświetl dostępne transformacje |
-p, --print-function | Zmień gramatykę, tak aby print() było uważane za funkcję |
-v, --verbose | Więcej pełnych wyników |
--no-diffs | Nie wysyłaj różnic refaktoryzacji |
-w | Zapisz ponownie zmodyfikowane pliki |
-n, --nobackups | Nie twórz kopii zapasowych zmodyfikowanych plików |
-o OUTPUT_DIR, --output-dir = OUTPUT_DIR | Umieść pliki wyjściowe w tym katalogu zamiast nadpisywać pliki wejściowe. Wymaga flagi -n , ponieważ pliki kopii zapasowych są niepotrzebne, gdy pliki wejściowe nie są modyfikowane. |
-W, --write-niezmienione-pliki | Zapisuj pliki wyjściowe, nawet jeśli nie były wymagane żadne zmiany. Przydatne z -o aby pełne drzewo źródłowe zostało przetłumaczone i skopiowane. Implikuje -w . |
--add-sufiks = ADD_SUFFIX | Określ ciąg, który zostanie dołączony do wszystkich wyjściowych nazw plików. Wymaga -n jeśli nie jest pusty. Np .: --add-suffix='3' wygeneruje pliki .py3 . |
Uwagi
Narzędzie 2to3 to program w języku Python, który służy do konwersji kodu napisanego w języku Python 2.x na kod Python 3.x. Narzędzie odczytuje kod źródłowy Python 2.x i stosuje serię poprawek, aby przekształcić go w prawidłowy kod Python 3.x.
Narzędzie 2to3 jest dostępne w standardowej bibliotece jako lib2to3, która zawiera bogaty zestaw narzędzi, które obsłużą prawie cały kod. Ponieważ lib2to3 jest biblioteką ogólną, możliwe jest pisanie własnych programów naprawczych dla 2to3.
Podstawowe użycie
Rozważ następujący kod Python2.x. Zapisz plik jako example.py
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)
W powyższym pliku znajduje się kilka niekompatybilnych linii. Metoda raw_input()
została zastąpiona metodą input()
w Pythonie 3.x, a print
nie jest już instrukcją, ale funkcją. Ten kod można przekonwertować na kod Python 3.x za pomocą narzędzia 2to3.
Unix
$ 2to3 example.py
Windows
> path/to/2to3.py example.py
Uruchomienie powyższego kodu spowoduje wyświetlenie różnic w stosunku do oryginalnego pliku źródłowego, jak pokazano poniżej.
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
Modyfikacje można zapisać z powrotem w pliku źródłowym przy użyciu opcji -w. example.py.bak
jest kopia zapasowa oryginalnego pliku o nazwie example.py.bak
, chyba że podano flagę -n.
Unix
$ 2to3 -w example.py
Windows
> path/to/2to3.py -w example.py
Teraz plik example.py
został przekonwertowany z języka Python 2.x do kodu Python 3.x.
Po zakończeniu plik example.py
będzie zawierał następujący prawidłowy kod Python3.x:
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)