Recherche…


Syntaxe

  • $ 2to3 [-options] chemin / vers / fichier.py

Paramètres

Paramètre La description
filename / nom_répertoire 2to3 accepte une liste de fichiers ou de répertoires à transformer en argument. Les répertoires sont parcourus de manière récursive pour les sources Python.
Option Option Description
-f FIX, --fix = FIX Spécifier les transformations à appliquer par défaut: tous. Liste des transformations disponibles avec --list-fixes
-j PROCESSES, --processes = PROCESSES Exécuter 2to3 simultanément
-x NOFIX, --nofix = NOFIX Exclure une transformation
-l, --list-fixes Liste des transformations disponibles
-p, --print-function Changer la grammaire pour que print() soit considéré comme une fonction
-v, --verbose Sortie plus détaillée
--no-diffs Ne pas sortir les diffs du refactoring
-w Ecrire les fichiers modifiés
-n, --nobackups Ne créez pas de sauvegardes de fichiers modifiés
-o OUTPUT_DIR, --output-dir = OUTPUT_DIR Placez les fichiers de sortie dans ce répertoire au lieu de remplacer les fichiers d'entrée. Nécessite l'indicateur -n , car les fichiers de sauvegarde ne sont pas nécessaires lorsque les fichiers d'entrée ne sont pas modifiés.
-W, --write-unchanged-files Ecrire des fichiers de sortie même si aucun changement n'était requis. Utile avec -o pour qu'un arbre source complet soit traduit et copié. Implique -w .
--add-suffix = ADD_SUFFIX Spécifiez une chaîne à ajouter à tous les noms de fichiers de sortie. Requiert -n si non vide. Ex .: --add-suffix='3' va générer des fichiers .py3 .

Remarques

L'outil 2to3 est un programme python utilisé pour convertir le code écrit en Python 2.x en code Python 3.x. L'outil lit le code source Python 2.x et applique une série de correcteurs pour le transformer en code Python 3.x valide.

L'outil 2to3 est disponible dans la bibliothèque standard sous le nom de lib2to3, qui contient un ensemble complet de correcteurs qui gèrent presque tout le code. Lib2to3 étant une bibliothèque générique, il est possible d’écrire vos propres correcteurs pour 2to3.

Utilisation de base

Considérez le code Python2.x suivant. Enregistrez le fichier sous le nom 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)

Dans le fichier ci-dessus, il existe plusieurs lignes incompatibles. La méthode raw_input() a été remplacée par input() dans Python 3.x et print n’est plus une instruction, mais une fonction. Ce code peut être converti en code Python 3.x à l'aide de l'outil 2to3.

Unix

$ 2to3 example.py

les fenêtres

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

L'exécution du code ci-dessus affichera les différences par rapport au fichier source d'origine, comme indiqué ci-dessous.

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

Les modifications peuvent être réécrites dans le fichier source en utilisant le drapeau -w. Une sauvegarde du fichier d'origine appelé example.py.bak est créée, à moins que l'option -n ne soit indiquée.

Unix

$ 2to3 -w example.py

les fenêtres

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

Maintenant, le fichier example.py a été converti du code Python 2.x au code Python 3.x.

Une fois terminé, example.py contiendra le code Python3.x suivant:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow