在Python中,是否有一种方法可以在每个文件的基础上强制使用空格或制表符缩进?
嗯,也许“强制”太强了,更像是“建议”。
我不断收到带有混合缩进的补丁文件,这很烦人......(至少可以说)Python 本身可以告诉何时出现问题,但我正在编辑器级别寻找一些东西来做到这一点,就像它存在于字符集。
编辑:好的,我的问题不清楚,我问这个是因为我不断收到您可以想象的任何选项卡/空间组合的更正和补丁。我正在使用 Mercurial 作为 DVCS,也许这个级别存在某些东西?
Tim Peters 编写了一个名为 reindent.py 的漂亮脚本,它将 .py 文件转换为使用 4 个空格缩进且没有制表符。它可以在here找到,但首先检查您的发行版——它可能捆绑在示例或工具目录中。 (在最新的 LTS Ubuntu 上,它由
python2.7-examples
软件包提供。)
如果您可以设置 Mercurial 挂钩,您应该能够通过 reindent.py 运行所有文件。
顺便说一下,如果您使用的是unix,那么您的系统可能还具有
expand
(和 unexpand
)命令,它将所有制表符转换为空格(以及将空格转换为制表符)。然而,在这种情况下,我认为reindent.py
是正确的工具。
tabnanny
模块: — 检测不明确的缩进。
这是你的编辑应该为你做的事情。大多数编辑器(例如,尝试 Notepad++,它是免费的)将允许您设置按 Tab 是否输入制表符或多个空格。我建议在所有文件中使用两个空格而不是制表符(我发现 4 个太多了)。使用空格而不是制表符更好,因为这意味着您可以使用空格键和制表符键缩进内容,而不必担心弄乱您的文件。
如果您有混合文件,那么编写自己的脚本将制表符转换为空格并不难
如PEP 8中所明确,切勿混合使用制表符和空格。但是,同时包含两者的文件可能会运行... 正如那里所说:
The most popular way of indenting Python is with spaces only. The second-most popular way is with tabs only. Code indented with a mixture of tabs and spaces should be converted to using spaces exclusively. When invoking the Python command line interpreter with the -t option, it issues warnings about code that illegally mixes tabs and spaces. When using -tt these warnings become errors. These options are highly recommended!
因此,解决方案是使用默认值:
python -t my_mixed_code.py
要在编辑级别回答,这取决于编辑,请注明!
您可以使用这个名为 reindent 的 python 包。
pip install reindent
reindent file.py # or project_dir