Python2to3内置工具的使用
前言:由于Python2在2020年1月1日起将停止更新,因此开发人员不得不考虑将代码从Python2移植到Python3。但是由于Python2和Python3的差异(具体可查看Python3与Python2:https://blog.csdn.net/qq_28757391/article/details/104265683),人工转换代码的工作量是十分巨大的。庆幸的是Python的开发人员已经为我们提供了内置的代码转换工具:2to3。
下面是该工具的使用介绍。
目录
一、前提
下载并安装好Python2.7,下载地址:
https://www.python.org/downloads/release/python-2717/
下载后得到python-2.7.17.amd64.msi安装包,打开安装包,根据安装向导进行安装(安装包不要存放在桌面)。
安装过程中若出现错误码为2503或2502的错误,则按以下步骤解决:
(1)按Win+X选择“命令提示符(管理员)”,或者右击命令提示符选择以管理员身份运行;
(2)记住安装包的保存路径,尽量不要放桌面,因为路径会很长,因此建议可以直接保存到根目录下,比如"D:\",那么路径就是D:\ python-2.7.17.amd64.msi;
(3)返回命令提示符,输入
msiexec /package "D:\python-2.7.17.amd64.msi" #具体的路径根据实际情况填写
按回车键执行即可安装。
安装完成后设置环境变量。打开命令行,输入python,出现如下信息,则表明安装成功。
二、2to3工具使用
1、根据Python2.7安装目录,找到 2to3.py文件 ,一般为在C:\Python27\Tools\Scripts目录下:
2、在C:\Python27\Tools\Scripts目录下,按下Shift+鼠标右键,选择“在此处打开命令窗口“,打开命令窗口。
1、在命令窗口输入命令将进行转换
(1)单个py文件转换:
python 2to3.py D:\test.py #D:\test.py为转换的文件的具体路径
命令执行之后,会打印修改前和修改后的代码:
这里可以看到修改后的代码多了 as 关键字。查看D:\test.py文件,可以看到该文件并没有被修改。
若想要在转换的同时直接修改该文件该怎么办呢?
(2)转换的同时覆盖文件(同时会留有.bak的备份文件):
python 2to3.py -w D:\test.py
(3)转换的同时覆盖文件但不备份:
python 2to3.py -w -n D:\test.py
(4)批量转换:
python 2to3.py D:\
(5)指定修复程序进行转换:
python 2to3.py -f has_key D:\test.py #has_key为指定修复程序
(6)禁用指定的修复程序进行转换:
python 2to3.py -x has_key D:\test.py #has_key为指定修复程序
三、注意事项
有时候2to3会在您的源代码中找到需要更改的地方,但2to3无法自动修复。在这种情况下,2to3会在文件的diff下面打印警告。
2to3也可以重构doctests。要启用此模式,请使用-d 标志。请注意,只有 doctests才会被重构。这也不要求模块是有效的Python。例如,rest文档中的doctest示例也可以使用此选项进行重构。
该-v选项可以对翻译过程的详细信息输出。
当-p通过时,2to3将print视为函数而不是语句。从 __future__ import print_function使用时,这很有用。如果未给出此选项,则打印修复程序将在一组额外的括号中包围打印调用,因为它无法区分带括号的print语句(例如print (“a” + “b” + “c”))和a真正的函数调用。
更多修复程序用法请查看文档:
https://docs.python.org/3.4/library/2to3.html#fixers