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 字符串格式化代码
Mar 17 Python
python的即时标记项目练习笔记
Sep 18 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
Python常见排序操作示例【字典、列表、指定元素等】
Aug 15 Python
windows下numpy下载与安装图文教程
Apr 02 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
python中报错"json.decoder.JSONDecodeError: Expecting value:"的解决
Apr 29 Python
python实现while循环打印星星的四种形状
Nov 23 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
Python unittest discover批量执行代码实例
Sep 08 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 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中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
重定向实现代码
2006/11/20 Javascript
javascript concat数组累加 示例
2009/09/03 Javascript
从面试题学习Javascript 面向对象(创建对象)
2012/03/30 Javascript
Jquery getJSON方法详细分析
2013/12/26 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
js实现复制功能(多种方法集合)
2018/01/06 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
JavaScript事件委托实现原理及优点进行
2020/08/29 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
Python函数基本使用原理详解
2020/03/19 Python
Python容器类型公共方法总结
2020/08/19 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
实习评语
2013/12/16 职场文书
高中军训感言200字
2014/02/23 职场文书
技能比武方案
2014/05/21 职场文书
公证委托书格式
2014/09/13 职场文书
小学教师节活动总结
2015/03/20 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书