2012-03-19 356 views
23

據我所知在unix中,總是在文件末尾有一個空行 - 或者換句話說,每行應該以\n結尾。PEP8:W292和W391之間的衝突

雖然與PEP8檢查我的Python代碼,我注意到它也指出,應該有\n在文件的結尾:

W292 no newline at end of file 
    JCR: The last line should have a newline. 

有什麼奇怪的,它與W391衝突:

W391 blank line at end of file 
    JCR: Trailing blank lines are superfluous. 

    Okay: spam(1) 
    W391: spam(1)\n 

如何它應該是?我是否應該在文件末尾留空行?

+3

您指的是哪個PEP 8? [官方網頁](http://www.python.org/dev/peps/pep-0008/)根本沒有提到這一點。 – 2012-03-19 10:02:27

+0

輸出來自從PYPI安裝的「pep8 --show-pep8」。 – seler 2012-03-19 10:42:28

回答

28

W391爲空白線,即,兩個連續\n秒。沒有衝突。根據W292

 
print 'last line' 


這是錯誤的:

+1

在pep中顯示的示例如何?它說最後不應該有''\ n''。我想你的意思是垃圾郵件(1)\ n
\ n''。 – seler 2012-03-19 10:44:50

+13

看起來好像VIM在每個文件的末尾添加了''\ n'',而沒有真正轉到下一行。整齊! – seler 2012-03-30 13:10:27

13

這就是W391在談論

 
print 'last line' 

什麼是正確的是:

 
print 'last line' 

+0

Hrm ..當我有最後一個版本,它顯示,因爲你有它在vim,並通過貓,我得到一個合成的W391警告。當我有第二個例子時,我沒有得到警告。這是合成器中的錯誤嗎? – naught101 2015-02-09 00:24:55

+2

@ naught101 Vim在幕後添加最後的換行符。在這種情況下,Vim欺騙你。有些插件可以告訴Vim如果您願意,不要添加最終的換行符。 – 2015-04-22 02:46:15

1

在Windows「\ n '是行之間的分隔符,但在Linux中,\ n'是任何行上的結尾符號。 Vim在linux平臺的行尾添加'\ n'並沒有錯,但是在os定義之後。