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中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
Python 实现一行输入多个值的方法
Apr 21 Python
python 单线程和异步协程工作方式解析
Sep 28 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
python如何实时获取tcpdump输出
Sep 16 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 Python
python引入其他文件夹下的py文件具体方法
May 23 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
第七节 类的静态成员 [7]
2006/10/09 PHP
PHP中实现汉字转区位码应用源码实例解析
2010/06/14 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
php加密解密实用类分享
2014/01/07 PHP
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
浅谈MySQL中的触发器
2015/05/05 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
使用Scrapy爬取动态数据
2018/10/21 Python
Python中作用域的深入讲解
2018/12/10 Python
python 实现在一张图中绘制一个小的子图方法
2019/07/07 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
Viking比利时:购买办公用品
2019/10/30 全球购物
Linux开机引导的步骤是什么
2015/10/19 面试题
资深地理教师自我评价
2013/09/21 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
煤矿安全协议书
2014/08/20 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
八年级历史教学反思
2016/02/19 职场文书
Django基础CBV装饰器和中间件
2022/03/22 Python