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中的对象拷贝示例 python引用传递
Jan 23 Python
使用Python编写一个模仿CPU工作的程序
Apr 16 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 Python
Pycharm保存不能自动同步到远程服务器的解决方法
Jun 27 Python
Python flask框架post接口调用示例
Jul 03 Python
python爬虫 爬取超清壁纸代码实例
Aug 16 Python
浅析python函数式编程
Sep 26 Python
python中用ctypes模拟点击的实例讲解
Nov 26 Python
Python实现批量将文件复制到新的目录中再修改名称
Apr 12 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
PHP加MySQL消息队列深入理解
2021/02/27 PHP
一端时间轮换的广告
2006/06/26 Javascript
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
AngularJs+Bootstrap实现漂亮的计算器
2017/08/10 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
jQuery 筛选器简单操作示例
2019/10/02 jQuery
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
Vue组件通信$attrs、$listeners实现原理解析
2020/09/03 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
Python中序列的修改、散列与切片详解
2017/08/27 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
儿科主治医生个人求职信
2013/09/23 职场文书
职业教育毕业生求职信
2013/11/09 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
负责培养人意见
2015/06/05 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
java executor包参数处理功能 
2022/02/15 Java/Android