Python3中的2to3转换工具使用示例

yipeiwu_com5年前Python基础

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

相关文章

Python的装饰器模式与面向切面编程详解

今天来讨论一下装饰器。装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大...

python中的多重继承实例讲解

python中的多重继承实例讲解

python和C++一样,支持多继承。概念虽然容易,但是困难的工作是如果子类调用一个自身没有定义的属性,它是按照何种顺序去到父类寻找呢,尤其是众多父类中有多个都包含该同名属性。 对经典类...

用python wxpy管理微信公众号并利用微信获取自己的开源数据

用python wxpy管理微信公众号并利用微信获取自己的开源数据

之前了解到itchat 乃至于 wxpy时 是利用tuling聊天机器人的接口。调用接口并保存双方的问答结果可以作为自己的问答词库的一个数据库累计。这些数据可以用于自己训练。 而最近希望...

Python实现二维数组按照某行或列排序的方法【numpy lexsort】

本文实例讲述了Python实现二维数组按照某行或列排序的方法。分享给大家供大家参考,具体如下: lexsort支持对数组按指定行或列的顺序排序;是间接排序,lexsort不修改原数组,返...

从列表或字典创建Pandas的DataFrame对象的方法

从列表或字典创建Pandas的DataFrame对象的方法

介绍 每当我使用pandas进行分析时,我的第一个目标是使用众多可用选项中的一个将数据导入Pandas的DataFrame 。 对于绝大多数情况下,我使用的 read_excel ,...