让 2to3 使用空格而不是制表符

car*_*lli 1 python python-2to3

我用来2to3转换 python 模块的文件夹。一切都很顺利,但是当我去运行其中一些时,它给了我一个关于空格和制表符的错误。我的理论:当2to3更改一行时,它使用制表符而不是空格,这与其他未更改的行不同。我想知道是否有办法改变这一点。

错误是:

TabError: inconsistent use of tabs and spaces in indentation
Run Code Online (Sandbox Code Playgroud)

代码片段很难显示,因为显示的制表符相当于 4 个空格,但我检查了一下,发现这种情况正在发生。

Mig*_*rro 7

2to3不应该用制表符替换空白,所以我猜你会得到 aTabError因为这些制表符已经存在于代码中,并且 python 3 不允许在单个文件中混合制表符和空格,而这在 python 2 中很好。

可以使用reindent.pypython 附带的脚本来修复此问题,该脚本可以在 linux 系统中找到/usr/lib/python2.7/Tools/scripts/reindent.py,也可以选择使用 pip by 安装pip install reindent。那么用空格替换制表符的命令是:

reindent.py file.py
Run Code Online (Sandbox Code Playgroud)