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爬取Coursera课程资源的详细过程
Nov 04 Python
Windows下实现Python2和Python3两个版共存的方法
Jun 12 Python
python中的字典操作及字典函数
Jan 03 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
python脚本生成caffe train_list.txt的方法
Apr 27 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
Python小进度条显示代码
Mar 05 Python
Python3之手动创建迭代器的实例代码
May 22 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
python中eval与int的区别浅析
Aug 11 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
Sep 26 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过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
PHP批量修改文件名称的方法分析
2017/02/27 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
js获取单选框或复选框值及操作
2012/12/18 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
js写一个字符串转成驼峰的实例
2013/06/21 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
Javascript缓存API
2016/06/14 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
基于vue中解决v-for使用报红并出现警告的问题
2018/03/03 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
[00:31]DOTA2上海特级锦标赛 Fnatic战队宣传片
2016/03/04 DOTA
python文件和目录操作函数小结
2014/07/11 Python
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
玩具公司的创业计划书
2013/12/31 职场文书
捐书活动总结
2014/05/04 职场文书
团代会闭幕词
2015/01/28 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
品德与社会教学反思
2016/02/24 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
2022/08/05 Java/Android