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编程中包的概念与管理
Oct 16 Python
Python编程判断这天是这一年第几天的方法示例
Apr 18 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
python生成ppt的方法
Jun 07 Python
对pycharm 修改程序运行所需内存详解
Dec 03 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
Apr 11 Python
详解numpy的argmax的具体使用
May 27 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
python实现简易淘宝购物
Nov 22 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 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 身份证号验证函数
2009/05/07 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
js获取当前路径的简单示例代码
2014/01/08 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
详解vue 模版组件的三种用法
2017/07/21 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
ES5新增数组的实现方法
2020/05/12 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
python并发2之使用asyncio处理并发
2017/12/21 Python
Python装饰器用法示例小结
2018/02/11 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Django实现学生管理系统
2019/02/26 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
python破解bilibili滑动验证码登录功能
2019/09/11 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
用Python开发app后端有优势吗
2020/06/29 Python
野兽派官方旗舰店:THE BEAST 野兽派
2016/08/05 全球购物
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
敬老模范事迹
2014/05/21 职场文书
安全宣传标语
2014/06/10 职场文书
2015年采购工作总结
2015/04/10 职场文书
新郎婚礼致辞
2015/07/27 职场文书
公司业务员管理制度
2015/08/05 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书