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中if __name__ == "__main__"详细解释
Oct 21 Python
Python基本语法经典教程
Mar 11 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
Python中使用支持向量机SVM实践
Dec 27 Python
python docx 中文字体设置的操作方法
May 08 Python
django js实现部分页面刷新的示例代码
May 28 Python
python保存数据到本地文件的方法
Jun 23 Python
Python单元测试简单示例
Jul 03 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
python交易记录整合交易类详解
Jul 03 Python
OpenCV-Python实现轮廓拟合
Jun 08 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
memcache命令启动参数中文解释
2014/01/13 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
jQuery Validate验证框架详解(推荐)
2016/12/17 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
2019/01/08 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
python处理cookie详解
2014/02/07 Python
21行Python代码实现拼写检查器
2016/01/25 Python
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python3爬虫学习之爬虫利器Beautiful Soup用法分析
2018/12/12 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
Python使用folium excel绘制point
2019/01/03 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
python实现最短路径的实例方法
2020/07/19 Python
python爬虫 requests-html的使用
2020/11/30 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
2020/11/30 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
金融管理毕业生求职信
2014/03/03 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
保研推荐信
2014/05/09 职场文书
测量员岗位职责
2015/02/14 职场文书
2015企业年终工作总结范文
2015/05/27 职场文书
elementui的el-popover修改样式不生效的解决
2021/06/30 Javascript
用Python可视化新冠疫情数据
2022/01/18 Python