因为种种原因,官方将在2020年1月1日停止发展python2相关模块,这就意味着所有使用Python2编写的项目都将接收不到官方的免费支持,更让人难受的是,Python3的一些细节比如包的导入,模块名等等都与Python不相同,由此而带来的最大的一个影响就是Python2向Python3的移植。为了解决这个问题,官方在我们安装Python3的同时,为提供一个2to3这个可执行文件。
在Windows平台上,2to3这个可执行文件一般在\Python\Python36-32\Tools\scripts目录下。
在linux平台上,2to3这个可执行文件一般在/usr/local/python3/bin这个目录下。具体情况以Python3实际安装路径为准。
在执行前,我们先进入2to3文件所在的父级目录下,然后运行python 2to3 --help或者python3 2to3 --help查看参数
# python3 2to3 --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.
参数不算太多,既可以转换单个文件,也可以转换某个文件夹下的所有文件。
使用的格式是 python 2to3 [options]
1、不加参数:仅仅打印出各个文件转换时需要修改的地方,但是不做修改
2、参数 -w : 启用回写修改。仅针对需要修改的文件,先对原文件进行备份,备份文件后缀为.bak。然后对原文件进行修改并写回原文件。注释和确切的缩进在整个翻译过程中都会保留下来。
3、参数 -l:以列表的形式打印出所有可用的修复程序。
4、参数 -f:指定一组要运行显式修复程序,默认是运行所有修复程序。
5、参数 -x:显式地禁用一些修复程序。
6、参数 -n:不为修改后的文档进行备份,与-w参数一起使用的时候会发现没有为修改的文档生成.bak文件
7、参数 -o:将输出文件放在这个目录中,而不是覆盖输入文件。需要与-n参数组合使用。
https://www.cnblogs.com/wushuaishuai/p/7611915.html
https://docs.python.org/3.0/library/2to3.html