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 快速排序代码
Nov 23 Python
python中sleep函数用法实例分析
Apr 29 Python
Python常用算法学习基础教程
Apr 13 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
Python用imghdr模块识别图片格式实例解析
Jan 11 Python
Python3.6简单反射操作示例
Jun 14 Python
Python3基础教程之递归函数简单示例
Jun 07 Python
python实现可变变量名方法详解
Jul 01 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 Python
Ubuntu16安装Python3.9的实现步骤
Dec 15 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
shopex主机报错误请求解决方案(No such file or directory)
2011/12/27 PHP
php 生成短网址原理及代码
2014/01/23 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
2014/01/31 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
KnockoutJS 3.X API 第四章之数据控制流foreach绑定
2016/10/10 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
2019/10/24 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
如何在python中执行另一个py文件
2020/04/30 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
生物技术专业研究生自荐信
2013/09/22 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
私用公车造成事故检讨书
2014/11/16 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
新闻稿格式范文
2015/07/18 职场文书