视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python3中的2to3转换工具使用示例
2020-11-27 14:34:03 责编:小采
文档


python3与python2的还是有诸多的不同,比如说在2中:
代码如下:


print "Hello,World!"
raw_input()


在3里面就成了:
代码如下:


print ("Hello,World!")
input()


所以如果用的python2开发的项目要迁移到3中,就需要进行代码的转换。Python3中自带了个转换工具,下面用个最简单的例子来说说2to3转换工具。
例子:(2to3Test.py 里面只有print这行代码)
代码如下:


# python 2.7.6
# 2to3Test.py

print "Hello,World!"


用python27显然是可以编译的:
代码如下:


D:Python>python27 2to3Test.py
Hello,World!


用python33就编译不过了,因为3里print是函数,这样写就会有语法错误。
代码如下:


D:Python>python33 2to3Test.py
File "2to3Test.py", line 1
print "Hello,World!"
^
SyntaxError: invalid syntax


下面用python3中自带的2to3工具进行转换:
代码如下:


D:Python>python C:Python33ToolsScripts2to3.py -w 2to3Test.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 2to3Test.py
--- 2to3Test.py (original)
+++ 2to3Test.py (refactored)
@@ -1 +1 @@
-print "Hello,World!"
+print("Hello,World!")
RefactoringTool: Files that were modified:
RefactoringTool: 2to3Test.py


最后用python33来进行编译,结果显示正确的。
代码如下:


D:Python>python33 2to3Test.py
Hello,World!

总结:
1. 目录. C:Python33ToolsScripts2to3.py. 其实在python2.6,2.7中都存在这个工具。
2. 如果不加-w参数,则默认只是把转换过程所对应的diff内容打印输出到当前窗口而已。
3. 加了-w,就是把改动内容,写回到原先的文件了。
4. 不想要生成bak文件,再加上-n即可。 bak最好还是有。

下载本文
显示全文
专题