2012-03-19 29 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/)にはこれはまったく言及されていません。 –

+0

出力はPYPIからインストールされた '' pep8 --show-pep8''からのものです。 – seler

答えて

28

W391はブランク線、二つの連続\n sです。紛争はありません。

+1

pepに表示されている例はどうですか?最後には '' \ n''がないはずだと言います。あなたが意味することは '' spam(1)\ n
\ n''だと思います。 – seler

+13

linke VIMは実際に次の行に行かずに各ファイルの最後に '' \ n''を追加します。ニート! – seler

13

これはW391が話しているものです。

 
print 'last line' 


これはW292に応じて間違っている:

 
print 'last line' 

正しいことは何ですか:Windowsの「\ nので

 
print 'last line' 

+0

Hrm .. vimで表示されているように最後のバージョンが表示され、catを介して、W391という警告メッセージが表示されます。私は2番目の例があるときには警告を受け取りません。それは合成的なバグですか? – naught101

+2

@ naught101 Vimはシーンの裏に最終改行を追加します。この例では、Vimがあなたを騙しています。必要に応じてVimに最終改行を追加しないように指示するプラグインがあります。 –

1

'は行間の区切りですが、linuxでは' \ n 'は任意の行の終了記号です。 VimはLinuxプラットフォームの行末に '\ n'を追加するのは間違っていませんが、OSの定義に従ってください。