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 13 Python
深入理解python函数递归和生成器
Jun 06 Python
python机器学习理论与实战(四)逻辑回归
Jan 19 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
查看python下OpenCV版本的方法
Aug 03 Python
python实现反转部分单向链表
Sep 27 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
Python中Numpy ndarray的使用详解
May 24 Python
基于python3的socket聊天编程
Feb 17 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
python使用requests库爬取拉勾网招聘信息的实现
Nov 20 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使用fopen创建utf8编码文件的方法
2014/10/31 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
php解析字符串里所有URL地址的方法
2015/04/03 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
js下获取div中的数据的原理分析
2010/04/07 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
Python实现Tab自动补全和历史命令管理的方法
2015/03/12 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
python多进程并发demo实例解析
2019/12/13 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
python+openCV对视频进行截取的实现
2020/11/27 Python
华润集团网上药店:健一网
2016/09/19 全球购物
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
本科毕业生自我鉴定
2013/11/02 职场文书
大学生职业生涯规划书模板
2014/01/03 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
政工师工作总结2015
2015/05/26 职场文书
单位工作证明范本
2015/06/15 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis
DQL数据查询语句使用示例
2022/12/24 MySQL