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


Posted in Python onJune 12, 2015

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中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
Dec 18 Python
Python中字典的setdefault()方法教程
Feb 07 Python
Python打印“菱形”星号代码方法
Feb 05 Python
深入浅析Python传值与传址
Jul 10 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
python找出因数与质因数的方法
Jul 25 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
Django实现从数据库中获取到的数据转换为dict
Mar 27 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 #Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 #Python
Python 3.x 新特性及10大变化
Jun 12 #Python
Python实现比较两个列表(list)范围
Jun 12 #Python
在Linux系统上安装Python的Scrapy框架的教程
Jun 11 #Python
Python语言实现机器学习的K-近邻算法
Jun 11 #Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 #Python
You might like
php csv操作类代码
2009/12/14 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
2020/08/06 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
js获取IP和PcName(IE)在vs中可用
2013/08/02 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
python基础教程之Hello World!
2014/08/29 Python
python 生成器协程运算实例
2017/09/04 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
如何让python的运行速度得到提升
2020/07/08 Python
python实现马丁策略的实例详解
2021/01/15 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
护士的自我鉴定
2014/02/07 职场文书
php引用传递
2021/04/01 PHP
PHP中strval()函数实例用法
2021/06/07 PHP