Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作

几乎所有的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

3)紧接着运行 2to3.py 脚本

C:\Program Files\Python 3.5\Tools\scripts>python 2to3.py

可以看见在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最好还是有。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Python2和Python3的共存和切换使用

    从python2到python3,这两个版本可以说是从语法.编码等多个方面上都有很大的差别.为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容,也就是说许多针对早期Python2版本设计的程式都无法在Python 3上正常执行.而且现在,python中的大多数第三方库都正在努力地修改以相容Python 3.0版本. 我之前初次安装的就是python3.6.2版本,不过在cocos开发时要运行build_native.py等文件,这些文件的语法都是python2版本的语法,由于

  • 把项目从Python2.x移植到Python3.x的经验总结

    经历移植jinja2到python3的痛苦之后,我把项目暂时放一放,因为我怕打破python3的兼容.我的做法是只用一个python2的代码库,然后在安装的时候用2to3工具翻译成python3.不幸的是哪怕一点点的改动都会打破迭代开发.如果你选对了python的版本,你可以专心做事,幸运的避免了这个问题. 来自MoinMoin项目的Thomas Waldmann通过我的python-modernize跑jinja2,并且统一了代码库,能同时跑python2,6,2,7和3.3.只需小小清理,我

  • Python3中的2to3转换工具使用示例

    python3与python2的还是有诸多的不同,比如说在2中: 复制代码 代码如下: print "Hello,World!"  raw_input() 在3里面就成了: 复制代码 代码如下: print ("Hello,World!")  input() 所以如果用的python2开发的项目要迁移到3中,就需要进行代码的转换.Python3中自带了个转换工具,下面用个最简单的例子来说说2to3转换工具. 例子:(2to3Test.py  里面只有print这行代

  • 编写同时兼容Python2.x与Python3.x版本的代码的几个示例

    编写兼容Python2.x与3.x代码 当我们正处于Python 2.x到Python 3.x的过渡期时,你可能想过是否可以在不修改任何代码的前提下能同时运行在Python 2和3中.这看起来还真是一个合理的诉求,但如何开始呢?哪些Python 2 代码在 3.x 解释器执行时容易出状况呢? print vs print() 如果你想的和我一样,你或许会说print语句,这是个很好的着手点,先简单展示一下,print在2.x中是一条语句,而在3.x中它是一个关键字或者是保留字.换句话说,因为这个

  • Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作

    几乎所有的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.

  • 对Python3中的print函数以及与python2的对比分析

    本文首先介绍在python3中print函数的应用,然后对比在pyhton2中的应用.(本文作者所用版本为3.6.0) 首先我们通过help(print)命令来查看print函数的相关信息,(注意在python2中print不是函数,不能通过help获得相关信息). 第一行告诉我们print在python3中是一个内建函数. 然后是这个函数的调用格式,以及各参数的意义. 这个函数可以将values(可以是多个用逗号隔开的值)输出到一个数据流文件,默认的输出格式是标准输出(sys.stdout).

  • 使用android studio开发工具编译GBK转换三方库iconv的方法

    网上大多教程和资源并没有从头到尾告诉怎么编译过程,这边文章教你一个对ndk编译懂的不多,又需要使用三方库,怎么办,硬着头皮搞,又无从下手,网上一堆资料,有价值的不多,到处是偏分的.本篇提供真实能运行,带的资源经过测试的.过程如下: 编译ICONV 1.1 解压缩 1.解压缩:  tar -xvf  ./libiconv-1.14.tar.gz  -C libiconv-1.14 2.配置:./configure --host=arm-linux-gnueabihf CC=/home/work/r

  • python3.x中安装web.py步骤方法

    希望此文能帮助到苦苦寻找python 3.x 上可用web.py的同学. 使用数据库的时候,依然选用了之前比较感兴趣的web.py 但安装的时候似乎发现有各种问题. ImportError: No module named 'utils' ModuleNotFoundError: No module named 'db' 等等,似乎也没有发现新的解决方案. 最后决定试一试dev的版本. pip install web.py==0.40.dev0 最后发现 web.py 的dev版本 在pytho

  • python的构建工具setup.py的方法使用示例

    本文介绍了python的构建工具setup.py,分享个大家,具体如下: 一.构建工具setup.py的应用场景 在安装python的相关模块和库时,我们一般使用"pip install  模块名"或者"python setup.py install",前者是在线安装,会安装该包的相关依赖包:后者是下载源码包然后在本地安装,不会安装该包的相关依赖包.所以在安装普通的python包时,利用pip工具相当简单.但是在如下场景下,使用python setup.py ins

  • 用系统自带工具在安装系统时给新硬盘分区图解_图解硬盘分区

    用系统自带工具在安装系统时给新硬盘分区图解 screen.width-461) window.open('/upload/20071011135718630.jpg');" src="http://files.jb51.net/upload/20071011135718630.jpg" border=0> screen.width-461) window.open('/upload/20071011135719793.jpg');" src="htt

  • mac下如何将python2.7改为python3

    1.查看当前电脑python版本 python -V  // 显示2.7.x 2.用brew升级python brew update python  3.如果安装成功,去系统目录下回看到两个版本的python cd usr/local/Cellar/ //到此目录下 cd python/ //进入python目录下 查看已安装的python版本,如果有2.x 和 3.x说明安装成功 4.将系统python版本,默认指向python3  (主要修改 ~/.bash_profile文件 和 ~/.b

  • Django自带日志 settings.py文件配置方法

    Django settings.py文件配置部分: # logging配置 log_file = '/home/nagain/learn/log' log_file_path = os.path.join(log_file, 'all.log') if not os.path.exists(log_file): os.mkdir(log_file) os.mknod(log_file_path) # 创建空文件 LOGGING = { 'version': 1, 'disable_existin

  • python3.6利用pyinstall打包py为exe的操作实例

    一.电脑需安装32位的python3.6(注意是32位的python而不是操作系统是32位,安装64的python会发现pyinstall无法提供服务) 二.安装python之后安装py利用的模块,我的程序时利用了openpyxl模块,直接cmd模式到python路径下C:\Python36\Scripts,C:\Python36\Scripts>pip install openpyxl 三.安装pyinstall,C:\Python36\Scripts>pip install pyinsta

随机推荐