Python Language
Strumento 2to3
Ricerca…
Sintassi
- $ 2to3 [-opzioni] percorso / a / file.py
Parametri
Parametro | Descrizione |
---|---|
nome_file / nome_directory | 2to3 accetta un elenco di file o directory che deve essere trasformato come argomento. Le directory sono attraversate in modo ricorsivo per le fonti Python. |
Opzione | Opzione Descrizione |
-f FIX, --fix = FIX | Specificare le trasformazioni da applicare; default: tutto Elenca le trasformazioni disponibili con --list-fixes |
-j PROCESSI, --processi = PROCESSI | Esegui 2to3 contemporaneamente |
-x NOFIX, --nofix = NOFIX | Escludere una trasformazione |
-l, --list-fixes | Elenca le trasformazioni disponibili |
-p, --print-function | Modificare la grammatica in modo che print() sia considerato una funzione |
-v, --verbose | Output più dettagliato |
--no-diff | Non emettere diffs del refactoring |
-w | Scrivi i file modificati |
-n, --nobackups | Non creare backup di file modificati |
-o OUTPUT_DIR, --output-dir = OUTPUT_DIR | Posiziona i file di output in questa directory invece di sovrascrivere i file di input. Richiede il flag -n , poiché i file di backup non sono necessari quando i file di input non vengono modificati. |
-W, --write-unchanged-files | Scrivi i file di output anche se non sono richieste modifiche. Utile con -o modo che un albero di sorgenti completo sia tradotto e copiato. Implica -w . |
--add-suffisso = ADD_SUFFIX | Specificare una stringa da aggiungere a tutti i nomi file di output. Richiede -n se non vuoto. Es .: --add-suffix='3' genererà file .py3 . |
Osservazioni
Lo strumento 2to3 è un programma python che viene utilizzato per convertire il codice scritto in Python 2.x in codice Python 3.x. Lo strumento legge il codice sorgente Python 2.x e applica una serie di fixer per trasformarlo in codice Python 3.x valido.
Lo strumento 2to3 è disponibile nella libreria standard come lib2to3 che contiene un ricco set di fixer che gestirà quasi tutto il codice. Dal momento che lib2to3 è una libreria generica, è possibile scrivere i propri fissatori per 2to3.
Uso di base
Si consideri il seguente codice Python2.x. Salva il file come example.py
def greet(name):
print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)
Nel file precedente, ci sono diverse righe incompatibili. Il metodo raw_input()
è stato sostituito con input()
in Python 3.xe print
non è più un'istruzione, ma una funzione. Questo codice può essere convertito in codice Python 3.x utilizzando lo strumento 2to3.
Unix
$ 2to3 example.py
finestre
> path/to/2to3.py example.py
L'esecuzione del codice sopra riportato mostrerà le differenze rispetto al file sorgente originale come mostrato di seguito.
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
Le modifiche possono essere riscritte nel file sorgente usando il flag -w. Viene creato un backup del file originale denominato example.py.bak
, a meno che non venga fornito il flag -n.
Unix
$ 2to3 -w example.py
finestre
> path/to/2to3.py -w example.py
Ora il file example.py
è stato convertito da Python 2.x al codice Python 3.x.
Una volta terminato, example.py
conterrà il seguente codice Python3.x valido:
def greet(name):
print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)