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