Поиск…


Синтаксис

  • $ 2to3 [-options] path / to / file.py

параметры

параметр Описание
имя_файла / имя_каталога 2to3 принимает список файлов или каталогов, которые должны быть преобразованы в качестве аргумента. Каталоги рекурсивно пройдены для источников Python.
вариант Вариант Описание
-f FIX, --fix = FIX Укажите применяемые преобразования; default: все. Список доступных преобразований с помощью --list-fixes
-j ПРОЦЕССЫ, --processes = ПРОЦЕССЫ Запуск 2to3 одновременно
-x NOFIX, --nofix = NOFIX Исключить преобразование
-l, --list-fixes Список доступных преобразований
-p, --print-function Измените грамматику так, чтобы print() считался функцией
-v, --verbose Более подробный вывод
--no-дифференциалы Не выводить разности рефакторинга
-w Записывать измененные файлы
-n, --nobackups Не создавать резервные копии измененных файлов
-o OUTPUT_DIR, --output-dir = OUTPUT_DIR Поместите выходные файлы в этот каталог вместо перезаписывания входных файлов. Требуется флаг -n , поскольку резервные файлы не нужны, если входные файлы не изменены.
-W, --write-unchanged-files Запись выходных файлов даже не требуется. Полезно с -o так что полное исходное дерево переводится и копируется. Подразумевает -w .
--add-суффикс = ADD_SUFFIX Укажите строку, которая будет добавлена ​​ко всем именам выходных файлов. Требуется -n если не пусто. Пример: --add-suffix='3' будет генерировать файлы .py3 .

замечания

Инструмент 2to3 представляет собой программу python, которая используется для преобразования кода, написанного в Python 2.x, в код Python 3.x. Инструмент читает исходный код Python 2.x и применяет ряд исправлений, чтобы преобразовать его в действительный код Python 3.x.

Инструмент 2to3 доступен в стандартной библиотеке как lib2to3, который содержит богатый набор исправлений, которые будут обрабатывать практически весь код. Поскольку lib2to3 является общей библиотекой, можно написать свои собственные фиксаторы для 2to3.

Основное использование

Рассмотрим следующий код Python2.x. Сохраните файл как 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)

В приведенном выше файле имеется несколько несовместимых строк. Метод raw_input() был заменен на input() в Python 3.x, и print больше не является оператором, а функцией. Этот код можно преобразовать в код Python 3.x с помощью инструмента 2to3.

Юникс

$ 2to3 example.py

Windows

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

Выполнение вышеуказанного кода приведет к различиям в исходном исходном файле, как показано ниже.

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

Изменения могут быть записаны обратно в исходный файл с использованием флага -w. Создается резервная копия исходного файла с именем example.py.bak , если не указан флаг -n.

Юникс

$ 2to3 -w example.py

Windows

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

Теперь файл example.py был преобразован из Python 2.x в код Python 3.x.

После завершения example.py будет содержать следующий действительный код 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow