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内置的字符串处理函数详细整理(覆盖日常所用)
Aug 19 Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
如何使用Python实现斐波那契数列
Jul 02 Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
vscode调试django项目的方法
Aug 06 Python
python自动生成sql语句的脚本
Feb 24 Python
python中对列表的删除和添加方法详解
Feb 24 Python
Python if else条件语句形式详解
Mar 24 Python
python playwright之元素定位示例详解
Jul 23 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 function用法如何递归及return和echo区别
2014/03/07 PHP
PHP实现简易blog的制作
2016/10/24 PHP
写了10年的Javascript也未必全了解的连续赋值运算
2011/03/25 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
vue组件实现移动端九宫格转盘抽奖
2020/10/16 Javascript
python django集成cas验证系统
2014/07/14 Python
Python复制文件操作实例详解
2015/11/10 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
python操作列表的函数使用代码详解
2017/12/28 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
python适合做数据挖掘吗
2020/06/16 Python
基于Python+QT的gui程序开发实现
2020/07/03 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
Python 生成短8位唯一id实战教程
2021/01/13 Python
家长会演讲稿
2014/04/26 职场文书
保研推荐信
2014/05/09 职场文书
慰问信模板
2015/02/14 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
联欢会开场白
2015/06/01 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
python opencv旋转图片的使用方法
2021/06/04 Python
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
手把手教你导入Go语言第三方库
2021/08/04 Golang
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL
DQL数据查询语句使用示例
2022/12/24 MySQL