Python Language
Herramienta 2to3
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
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:
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)