将python2代码升级为python3代码最佳实践

参考: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 . ”。如果有其他需求,比如不修改原文件,指定目录,增加后缀等可以去看参考链接。

posted @ 2020-03-27 15:55  ZH奶酪  阅读(1026)  评论(0编辑  收藏  举报