Buscar..


Sintaxis

  • $ 2to3 [-options] ruta / a / archivo.py

Parámetros

Parámetro Descripción
nombre de archivo / nombre_directorio 2to3 acepta una lista de archivos o directorios que se va a transformar como su argumento. Los directorios se recursivamente recorren para las fuentes de Python.
Opción Opción Descripción
-f FIX, --fix = FIX Especificar transformaciones a aplicar; por defecto: todos. Listar las transformaciones disponibles con --list-fixes
-j PROCESOS, --procesos = PROCESOS Ejecutar 2to3 al mismo tiempo
-x NOFIX, --nofix = NOFIX Excluir una transformación
-l, --list-fixes Listar las transformaciones disponibles
-p, --print-function Cambia la gramática para que print() sea ​​considerada una función.
-v, --verbose Salida más detallada
--no-diffs No se muestran datos de la refactorización.
-w Escribir archivos modificados
-n, --nobackups No cree copias de seguridad de archivos modificados
-o OUTPUT_DIR, --output-dir = OUTPUT_DIR Coloque los archivos de salida en este directorio en lugar de sobrescribir los archivos de entrada. Requiere la -n , ya que los archivos de copia de seguridad no son necesarios cuando los archivos de entrada no se modifican.
-W, --write-unchanged-files Escribir archivos de salida, incluso si no se requieren cambios. Útil con -o para que se traduzca y copie un árbol fuente completo. Implica -w .
--add-suffix = ADD_SUFFIX Especifique una cadena que se agregará a todos los nombres de archivo de salida. Requiere -n si no está vacío. Ej .: --add-suffix='3' generará archivos .py3 .

Observaciones

La herramienta 2to3 es un programa de Python que se utiliza para convertir el código escrito en Python 2.x en el código de Python 3.x. La herramienta lee el código fuente de Python 2.x y aplica una serie de reparadores para transformarlo en un código válido de Python 3.x.

La herramienta 2to3 está disponible en la biblioteca estándar como lib2to3, que contiene un amplio conjunto de fijadores que manejarán casi todo el código. Dado que lib2to3 es una biblioteca genérica, es posible escribir sus propios fijadores para 2to3.

Uso básico

Considere el siguiente código Python2.x. Guarde el archivo como 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)

En el archivo anterior, hay varias líneas incompatibles. El método raw_input() se ha reemplazado con input() en Python 3.xy la print ya no es una declaración, sino una función. Este código se puede convertir a código Python 3.x usando la herramienta 2to3.

Unix

$ 2to3 example.py

Windows

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

La ejecución del código anterior generará las diferencias con respecto al archivo fuente original, como se muestra a continuación.

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

Las modificaciones se pueden volver a escribir en el archivo de origen utilizando el indicador -w. Se crea una copia de seguridad del archivo original llamado example.py.bak , a menos que se indique el distintivo -n.

Unix

$ 2to3 -w example.py

Windows

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

Ahora el archivo example.py se ha convertido de Python 2.x al código de Python 3.x.

Una vez finalizado, example.py contendrá el siguiente código válido de 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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow