基本用法
请考虑以下 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)