Python脚本应该以新行结尾?Pylint自相矛盾?

Pre*_*rem 5 python vim static-analysis pylint

我是Pylint的新手,当我针对我的脚本运行它时,我得到了这个输出:

C: 50, 0: Trailing newlines (trailing-newlines)

在这里,Pylint说最终换行是不好的.

我喜欢在我的脚本末尾有一个新行,所以我想我会禁用此警告.我做了一些谷歌网络搜索,发现了这个:http://pylint-messages.wikidot.com/messages: c0304

C0304消息

最后的换行线丢失了

描述

当Python源文件的最后一行没有行结束符时使用.

此消息属于格式检查器.说明

虽然Python解释器通常不需要在最后一行使用行结束字符,但是处理Python源文件的其他程序可能会这样做,并且拥有它是一种很好的做法.这在Python文档中得到了证实:行结构,其表明物理行由平台的相应行结束符号结束.

在这里,Pylint说错过最后的换行是不好的.

(A)正确的观点是什么?(B)如何禁用最终新行的检查?

{{编辑:事实证明,这不是Pylint的问题; 这是vim的一个问题,它会自动添加eol:VIM在文件末尾禁用自动换行 }}

Dun*_*can 8

您收到的pylint警告抱怨您有多个尾随换行符.当根本没有尾随换行符时,会发生C0304消息.

这些信息并不矛盾,表明存在不同的问题.

您需要至少一个换行符的原因是,如果文件结束并且最后一行有文本但文件末尾没有换行符,则历史上某些工具会出现问题.编写得不好的工具可能会错过处理最后一个部分行,甚至更糟糕的是可以读取超出最后一行的随机内存(尽管使用Python编写的工具不太可能发生这种情况,使用C编写的工具可能会发生这种情况).

因此,您必须确保有一个换行符终止最后一个非空白行.

但是你不希望文件末尾有任何完全空行.它们实际上不会产生错误,但它们是不整洁的.所以删除任何空行,你应该没事.

  • 虽然我确信我只有一个换行符,但是两个用户(@ mastro35和Duncan)提到了多个换行符的情况,因此我决定使用**hexdump -C**进行检查,确实有**两个换行符**.怎么样 ?事实证明,**vim是罪魁祸首**:http://stackoverflow.com/questions/1050640/vim-disable-automatic-newline-at-end-of-file; Pylint是对的.Duncan和mastro35,谢谢! (6认同)
  • 我只有一个换行符(在最后一行代码上按 Enter 键),并且收到“尾随换行符”警告。我删除了这个(在 vim 中使用 dd ),警告就消失了。我没有多个换行符。 (2认同)