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实现从URL地址提取文件名的方法
May 15 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
Django 生成登陆验证码代码分享
Dec 12 Python
Python使用装饰器模拟用户登陆验证功能示例
Aug 24 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
python 批量解压压缩文件的实例代码
Jun 27 Python
python项目对接钉钉SDK的实现
Jul 15 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
python点击鼠标获取坐标(Graphics)
Aug 10 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
Python使用OpenPyXL处理Excel表格
Jul 02 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python str与repr的区别
2013/03/23 Python
开源Web应用框架Django图文教程
2017/03/09 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
美国在线购物频道:Shop LC
2019/04/21 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
10条PHP编程习惯
2014/05/26 面试题
四川成都导游欢迎词
2014/01/18 职场文书
酒店端午节促销方案
2014/02/18 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
医院科室评语
2015/01/04 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电