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

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

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow