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 10 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
python:print格式化输出到文件的实例
May 14 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
学生信息管理系统Python面向对象版
Jan 30 Python
Python安装Flask环境及简单应用示例
May 03 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
Jun 11 Python
pymysql 开启调试模式的实现
Sep 24 Python
pytorch中的上采样以及各种反操作,求逆操作详解
Jan 03 Python
Django框架获取form表单数据方式总结
Apr 22 Python
Autopep8的使用(python自动编排工具)
Mar 02 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
星际争霸任务指南——人族
2020/03/04 星际争霸
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
PHP数组交集的优化代码分析
2011/03/06 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
通过实例浅析Python对比C语言的编程思想差异
2015/08/30 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
解决项目pycharm能运行,在终端却无法运行的问题
2019/01/19 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
使用python实现kNN分类算法
2019/10/16 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
如何实现jdbc性能优化
2012/07/30 面试题
外贸销售员求职的自我评价
2013/11/23 职场文书
名人演讲稿范文
2014/09/16 职场文书
小学校本教研总结
2015/08/13 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android