基本用法

請考慮以下 Python2.x 程式碼。將檔案另存為 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)

在上面的檔案中,有幾個不相容的行。在 Python 3.x 中,raw_input() 方法已被替換為 input(),而 print 不再是一個語句,而是一個函式。可以使用 2to3 工具將此程式碼轉換為 Python 3.x 程式碼。

Unix

$ 2to3 example.py

Windows

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

執行上面的程式碼將輸出與原始原始檔的差異,如下所示。

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

可以使用 -w 標誌將修改寫回原始檔。除非給出 -n 標誌,否則將建立名為 example.py.bak 的原始檔案的備份。

Unix

$ 2to3 -w example.py

Windows

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

現在 example.py 檔案已經從 Python 2.x 轉換為 Python 3.x 程式碼。

完成後,example.py 將包含以下有效的 Python3.x 程式碼:

Python 3.x >= 3.0

def greet(name):
    print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)