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 splitlines使用技巧
Sep 06 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
python之PyMongo使用总结
May 26 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
Python 线程池用法简单示例
Oct 02 Python
python通过matplotlib生成复合饼图
Feb 06 Python
Django自定义列表 models字段显示方式
Apr 03 Python
python如何建立全零数组
Jul 19 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
python源码剖析之PyObject详解
May 18 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 使用post,get的一种简洁方式
2010/04/25 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
javascript中的3种继承实现方法
2016/01/27 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
jquery实现聊天机器人
2020/02/08 jQuery
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
Python统计列表中的重复项出现的次数的方法
2014/08/18 Python
python统计一个文本中重复行数的方法
2014/11/19 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
使用Python爬了4400条淘宝商品数据,竟发现了这些“潜规则”
2018/03/23 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Python实现我的世界小游戏源代码
2021/03/02 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
办理居住证介绍信
2014/01/15 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python