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 运算符 供重载参考
Jun 11 Python
python的即时标记项目练习笔记
Sep 18 Python
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
在Python中实现贪婪排名算法的教程
Apr 17 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
我就是这样学习Python中的列表
Jun 02 Python
python实现大文件分割与合并
Jul 22 Python
python中的global关键字的使用方法
Aug 20 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 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
phpmyadmin 访问被拒绝的真实原因
2009/06/15 PHP
实用PHP会员权限控制实现原理分析
2011/05/29 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
python显示天气预报
2014/03/02 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
Python中断多重循环的思路总结
2019/10/04 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
python os.listdir()乱码解决方案
2021/01/31 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
英国女性时尚品牌:Apricot
2018/12/04 全球购物
建筑专业自荐信范文
2014/01/05 职场文书
英语系毕业生求职信
2014/07/13 职场文书
新闻传播专业求职信
2014/07/22 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2014年勤工助学工作总结
2014/11/24 职场文书
启动Tomcat时出现大量乱码的解决方法
2021/06/21 Java/Android
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android
使用Python解决图表与画布的间距问题
2022/04/11 Python