利用Python内置(Python脚本)工具,帮你自动转换
Python 2.x版本,比如我安装的Python 2.7.2,其在windows下载安装好之后,就自带了相关的一些有用的工具。
其中一个叫做2to3.py,就是用来帮你实现,将Python 2.x的代码,转换为Python 3.x的代码的。
其位置位于:Python安装的根目录F:\Python34\Tools\Scripts\2to3.py
【如何利用2to3.py,实现将Python 2.x的代码,转换为Python 3.x的代码】
比如我手上有个Python 2.x的python脚本:
F:\GitHub\test.py
现在,想要将其转换为Python 3.x的代码。
可以通过打开windows的cmd,进入到python34的安装目录,F:\Python34\Tools\Scripts
A 按目录转换
假设我要转换的代码所在目录在:F:\GitHub
在cmd里面输入:
F:\Python34\Tools\Scripts>python 2to3.py -w F:\GitHub\
B 按指定代码转换
F:\Python34\Tools\Scripts>python 2to3.py -w F:\GitHub\test.py
即可成功转换,对应的执行结果:
此时,你可以看到原先的test.py,已经变成了Python 3.x的代码了。
对应的,也多出一个bak文件:test.py.bak,两者比较一下,即可看出区别:
当前,对于2to3.py本身,也可以通过help查看到更多的用法:
F:\Python34\Tools\Scripts\>python 2to3.py --help
Usage: 2to3 [options]
file
|
dir
...
Options:
-h, --help show this help message and
exit
-d, --doctests_only Fix up doctests only
-f FIX, --fix=FIX Each FIX specifies a transformation; default: all
-j PROCESSES, --processes=PROCESSES
Run 2to3 concurrently
-x NOFIX, --nofix=NOFIX
Prevent a transformation from being run
-l, --list-fixes List available transformations
-p, --print-
function
Modify the grammar so that print() is a
function
-
v
, --verbose More verbose logging
--no-diffs Don't show diffs of the refactoring
-w, --write Write back modified files
-n, --nobackups Don't write backups
for
modified files
-o OUTPUT_DIR, --output-dir=OUTPUT_DIR
Put output files in this directory instead of
overwriting the input files. Requires -n.
-W, --write-unchanged-files
Also write files even if no changes were required
(useful with --output-dir); implies -w.
--add-suffix=ADD_SUFFIX
Append this string to all output filenames. Requires
-n if non-empty. ex: --add-suffix='3' will generate
.py3 files.
备注
(1)如果上述不加-w参数,则默认只是把转换过程所对应的diff内容打印输出到当前窗口而已。
(2)加了-w,就是把改动内容,写回到原先的文件了。
(3)不想要生成bak文件,再加上-n即可。
(4)不想看到那一堆输出的内容,加上–no-diffs,即可。