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

Python script should end with new line or not ? Pylint contradicting itself?

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

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

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

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

C0304 Message

Final newline missing

Description

Used when a Python source file has no line end character(s) on its
last line.

This message belongs to the format checker. Explanation

While Python interpreters typically do not require line end
character(s) on the last line, other programs processing Python source
files may do, and it is simply good practice to have it. This is
confirmed in Python docs: Line Structure which states that a physical
line is ended by the respective line end character(s) of the platform.

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

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

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


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

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

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

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

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


C0304 Final newline missing is the error occures when a Python source file has no line end character(s) on its last line.

我告诉你如何禁用pylint交战。

要禁用警告,您可以在.py文件中添加以下行,通常是在导入之前添加的良好做法。

1
2
3
# disabling:
# C0304: Trailing newlines (trailing-newlines)
# pylint: disable=C0304

要么
您可以创建配置文件~/.pylintrc
这允许您忽略您不关心的警告。