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中的闭包
Jul 08 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
Python3实现对列表按元组指定列进行排序的方法分析
Dec 22 Python
python3使用matplotlib绘制散点图
Mar 19 Python
深入了解和应用Python 装饰器 @decorator
Apr 02 Python
简单了解python 邮件模块的使用方法
Jul 24 Python
Python队列RabbitMQ 使用方法实例记录
Aug 05 Python
python常用数据重复项处理方法
Nov 22 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
python小项目之五子棋游戏
Dec 26 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
Python办公自动化之教你用Python批量识别发票并录入到Excel表格中
Jun 26 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实现四舍五入的方法小结
2015/03/03 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
JS+HTML5 FileReader对象用法示例
2017/04/07 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
代码分析vue中如何配置less
2018/09/28 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
微信跳一跳python代码实现
2018/01/05 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
django 将model转换为字典的方法示例
2018/10/16 Python
使用Python进行目录的对比方法
2018/11/01 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
python 如何调用远程接口
2020/09/11 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
html5 input元素新特性_动力节点Java学院整理
2017/07/06 HTML / CSS
Bealls Florida百货商店:生活服饰、家居装饰和鞋子
2018/02/23 全球购物
美国汽车性能部件和赛车零件网站:Vivid Racing
2018/03/27 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
银行实习鉴定
2013/12/13 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
2015年工会工作总结
2015/03/30 职场文书
夫妻吵架保证书
2015/05/08 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
Spring中bean集合注入的方法详解
2022/07/07 Java/Android
java实现web实时消息推送的七种方案
2022/07/23 Java/Android