Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作


Posted in Python onMarch 03, 2021

几乎所有的Python 2程序都需要一些修改才能正常地运行在Python 3的环境下。为了简化这个转换过程,Python 3自带了一个叫做2to3的实用脚本(Utility Script),这个脚本会将你的Python 2程序源文件作为输入,然后自动将其转换到Python 3的形式。

本文介绍一下在windows 10 环境下如何使用这个工具:

1)首先要先安装好python3,可到官网下载https://www.python.org/

2)使用Windows 命令提示符(cmd)打开2to3.py 脚本所在位置,如下图:

C:\Users\CodeMing>cd C:\Program Files\Python 3.5\Tools\scripts

Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作

3)紧接着运行 2to3.py 脚本

C:\Program Files\Python 3.5\Tools\scripts>python 2to3.py

Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作

可以看见在python 2to3.py 后面是需要参数的,我们输入--help 可以看到所需的参数信息。

4)2to3.py 脚本可以单独转换python2.x 代码 到python3,也可以按照目录批量的转换。下面分别举例说明一下:

A 按目录转换

假设我要转换的代码所在目录在:E:\ipv6-master

那么在CMD里面输入:

C:\Program Files\Python 3.5\Tools\scripts>python 2to3.py -w E:\ipv6--master\

B 按指定代码转换

C:\Program Files\Python 3.5\Tools\scripts>python 2to3.py -w E:\ipv6--master\IPV6.py

已知问题:

1)当要转换的代码在C盘的路径下,转换会出问题。显示:拒绝访问。可能是权限问题。

补充:python中2to3工具的使用

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标准算法实现数组全排列的方法
Mar 17 Python
Python中的localtime()方法使用详解
May 22 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
《与孩子一起学编程》python自测题
May 27 Python
keras模型可视化,层可视化及kernel可视化实例
Jan 24 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
基于Python实现天天酷跑功能
Jan 06 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 Python
实战Python爬虫爬取酷我音乐
Apr 11 Python
Pygame游戏开发之太空射击实战敌人精灵篇
Aug 05 Python
详解python第三方库的安装、PyInstaller库、random库
Mar 03 #Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 #Python
对Pytorch 中的contiguous理解说明
Mar 03 #Python
Flask中jinja2的继承实现方法及实例
Mar 03 #Python
基于PyTorch中view的用法说明
Mar 03 #Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 #Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 #Python
You might like
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
PHP实现验证码校验功能
2017/11/16 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
php实现对文件压缩简单的方法
2019/09/29 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Python实现的Google IP 可用性检测脚本
2015/04/23 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
Python 实现简单的电话本功能
2015/08/09 Python
Python sorted函数详解(高级篇)
2018/09/18 Python
Python操作json的方法实例分析
2018/12/06 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
python 绘制场景热力图的示例
2020/09/23 Python
小学生安全保证书
2014/02/01 职场文书
网络技术专业求职信
2014/05/02 职场文书
年终晚会活动方案
2014/08/21 职场文书
班主任经验交流材料
2014/12/16 职场文书
python基础详解之if循环语句
2021/04/24 Python
python爬取某网站原图作为壁纸
2021/06/02 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python