强制执行;空格“;或;“标签”;仅在python文件中?

强制执行;空格“;或;“标签”;仅在python文件中?,python,tabs,indentation,spaces,Python,Tabs,Indentation,Spaces,在Python中,有没有一种方法可以强制使用空格或制表符来缩进每个文件 嗯,也许“强制”太强了,更像是“推荐” 我一直收到混合缩进补丁文件,这是恼人的。。。(至少可以说)Python本身可以判断何时出现问题,但我正在编辑器级别上搜索一些东西来做到这一点,就像它存在于字符集中一样 编辑:好的,我的问题不清楚,我之所以问这个问题,是因为我一直在收到更正和补丁,这些更正和补丁出现在你可以想象的任何选项卡/空间的组合中。我正在使用Mercurial作为DVCS,可能在这个级别上存在一些问题?查看模块:-

在Python中,有没有一种方法可以强制使用空格或制表符来缩进每个文件

嗯,也许“强制”太强了,更像是“推荐”

我一直收到混合缩进补丁文件,这是恼人的。。。(至少可以说)Python本身可以判断何时出现问题,但我正在编辑器级别上搜索一些东西来做到这一点,就像它存在于字符集中一样


编辑:好的,我的问题不清楚,我之所以问这个问题,是因为我一直在收到更正和补丁,这些更正和补丁出现在你可以想象的任何选项卡/空间的组合中。我正在使用Mercurial作为DVCS,可能在这个级别上存在一些问题?

查看模块:-检测模棱两可的缩进。

这是您的编辑器应该为您做的事情。大多数编辑器(例如,试试记事本+),它是免费的)都允许您设置点击tab是输入制表符还是空格。我建议在所有文件中使用两个空格而不是制表符(我发现4太多了)。使用空格而不是制表符更好,因为这意味着您可以同时使用空格键和制表符键缩进内容,而不用担心弄乱文件

如果您有混合的文件,编写自己的脚本将制表符转换为空格并不困难,如中所述,切勿混合制表符和空格。但是,同时具有这两个属性的文件可能只会运行。。。 正如上面所说:

因此,解决方案将用作默认值:

python -t my_mixed_code.py

要在编辑器级别回答,这取决于编辑器,请指定

蒂姆·彼得斯(Tim Peters)编写了一个名为的漂亮脚本,它将.py文件转换为使用4个空格的缩进,而不使用制表符。它是可用的,但首先检查您的发行版——它可能捆绑在示例或工具目录中。(在最新的LTS Ubuntu上,它由
python2.7-examples
包提供。)

如果可以设置Mercurial钩子,则应该能够通过reindent.py运行所有文件


顺便说一下,如果您使用的是unix,那么您的系统可能还具有
展开
(和
取消展开
)命令,该命令将所有制表符转换为空格(将空格转换为制表符)。但是,在这种情况下,我认为
reindent.py
是正确的工具。

应该在某个地方有一个钩子,所有传入文件都可以通过它来运行。您应该在那里添加一个tabs2spaces脚本。或者只需与向您发送补丁的人交谈——如果主脚本使用空格,那么他们向您发送带有选项卡的补丁是不正确的。+1,love reindent。顺便说一句,你能为Javascript、HTML、CSS等推荐类似的s/thing吗。。。?这在语义上并不重要,但在多作者项目中,我发现这种特殊风格的混合很烦人——现在我确实主要使用hg!)@亚历克斯:哦,我很想给你一些智能的东西,但是,唉,我没有一个好的建议。有一个编辑器指令设置文件的字符编码,例如“#--coding:utf-8--”将文本保存为utf-8。也许有类似于设置制表符宽度的东西?问题不是如何正确缩进作者正在编写的代码,而是如何修复从外部贡献者发送的补丁。此外,当存在“expand”和“reindent.py”等工具时,无需编写脚本。
python -t my_mixed_code.py