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

Python 2.x 2.0
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:

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow