參考:https://docs.python.org/zh-cn/3/library/2to3.html
2to3是python自帶的工具,能處理大部分diff,剩下的還需要手動處理的(我不知道如何自動處理):
- 【ERROR】str,unicode,bytes的問題;
- 【WARNING】如果py2代碼的print已經帶()了,那么這個工具還是會再套一層(());
如果機器上只有1個py3,那么直接用2to3命令即可;
如果機器上有多個py3,那么可以使用對應版本的2to3,比如2to3-3.6
可以先clone一個干凈項目代碼的master branch,並將其放在_py3目錄:
git clone git@xxxxxx.git xxx_py3
cd xxx_py3
2to3-3.6 -w -n .
# 2to3-3.6, 由於機器上有多個py3版本,可以指定2to3的版本
# -w:直接在原始文件上進行修改
# -n:不需要對原始文件進行備份,即不會生成xxx.py.bak文件
# .:當前目錄(包括子目錄)下所有文件
上邊這種方法基本上滿足所有場景了,記住這個命令“2to3-3.6 -w -n . ”。如果有其他需求,比如不修改原文件,指定目錄,增加后綴等可以去看參考鏈接。