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 06 Python
Python抓取百度查询结果的方法
Jul 08 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
python学习之hook钩子的原理和使用
Oct 25 Python
详解从Django Rest Framework响应中删除空字段
Jan 11 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
Python开发五子棋小游戏
May 02 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 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
奇怪的PHP引用效率问题分析
2012/03/23 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
php无限遍历目录示例
2014/02/21 PHP
php查询mssql出现乱码的解决方法
2014/12/29 PHP
前端必学之PHP语法基础
2016/01/01 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
PHP实现表单提交时去除斜杠的方法
2016/12/26 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
2015/03/04 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
详解VueJs前后端分离跨域问题
2017/05/24 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
python端口扫描系统实现方法
2014/11/19 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
Python常见工厂函数用法示例
2018/03/21 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
2020/03/10 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
物业管理大学生个人的自我评价
2013/10/10 职场文书
普通党员个人整改措施
2014/10/27 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
小学中等生评语
2014/12/29 职场文书
婚宴致辞
2015/07/28 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
Nginx利用Logrotate实现日志分割
2022/05/20 Servers