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 相关文章推荐
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
Django文件存储 默认存储系统解析
Aug 02 Python
pycharm创建scrapy项目教程及遇到的坑解析
Aug 15 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
keras K.function获取某层的输出操作
Jun 29 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 Python
Django rest framework分页接口实现原理解析
Aug 21 Python
Python 中 Shutil 模块详情
Nov 11 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版微信公众平台红包API
2015/04/02 PHP
浅析PHP开发规范
2018/02/05 PHP
给moz-firefox下添加IE方法和属性
2007/04/10 Javascript
随窗体滑动的小插件sticky源码
2013/06/21 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
python操作CouchDB的方法
2014/10/08 Python
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
python关键字and和or用法实例
2015/05/28 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
python django事务transaction源码分析详解
2017/03/17 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
python生成任意频率正弦波方式
2020/02/25 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
学生爱国演讲稿
2014/01/14 职场文书
节能宣传周活动总结
2014/05/08 职场文书
培训班通知
2015/04/25 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
Python基础之变量的相关知识总结
2021/06/23 Python