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列表操作实例
Jan 14 Python
Python Sleep休眠函数使用简单实例
Feb 02 Python
在Django的视图中使用数据库查询的方法
Jul 16 Python
Python的面向对象编程方式学习笔记
Jul 12 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python使用flask框架操作sqlite3的两种方式
Jan 31 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
学习和使用python的13个理由
Jul 30 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
python序列类型种类详解
Feb 26 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
2017/02/15 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
用javascript实现自定义标签
2007/05/08 Javascript
javascript 处理HTML元素必须避免使用的一种方法
2009/07/30 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
简单实现js选项卡切换效果
2016/02/03 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
python笔记:mysql、redis操作方法
2017/06/28 Python
django实现用户注册实例讲解
2019/10/30 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
python实现图像拼接
2020/03/05 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
详解python3类型注释annotations实用案例
2021/01/20 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
企业治理工作自我评价
2013/09/26 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
司法局群众路线教育实践活动整改措施
2014/09/17 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
单位工作证明
2014/10/07 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
通过shell脚本对mysql的增删改查及my.cnf的配置
2021/07/07 MySQL
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS
Python数组变形的几种实现方法
2022/05/30 Python