2012-03-19 19 views
23

Per quanto ne so in Unix, è consigliabile avere sempre una riga vuota alla fine del file, o per dirla in altre parole: ogni riga deve terminare con \n.PEP8: conflitto tra W292 e W391

Durante il controllo il mio codice python con PEP8 ho notato che afferma anche che ci dovrebbe essere \n alla fine del file:

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

Cosa c'è di strano, è in conflitto con W391:

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

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

Come dovrebbe essere? Dovrei avere una riga vuota alla fine del file o no?

+3

A quale PEP 8 ti riferisci? La [pagina ufficiale] (http://www.python.org/dev/peps/pep-0008/) non menziona affatto questo. –

+0

l'output proviene da '' pep8 --show-pep8'' installato da PYPI. – seler

risposta

28

W391 è uno sbozzato linea , cioè, due consecutivi\n s. Non c'è conflitto

+1

Che ne dite di esempio mostrato in pep? Dice che non ci dovrebbe essere nessun '' \ n'' alla fine. Immagino che cosa intendi sia '' spam (1) \ n
\ n''. – seler

+13

Sembra che VIM aggiunga '' \ n'' alla fine di ogni file senza effettivamente passare alla riga successiva. Neat! – seler

13

Questo è ciò W391 sta parlando:

 
print 'last line' 


Questo è sbagliato secondo il W292:

 
print 'last line' 

Ciò che è corretto è:

 
print 'last line' 

+0

Hrm .. quando ho l'ultima versione, che visualizza come hai in vim, e via cat, ottengo un avviso W391 da syntastic. Non ricevo l'avviso quando ho il secondo esempio. È un bug in syntastic? – naught101

+2

@ naught101 Vim aggiunge la nuova riga finale dietro le quinte. In questo caso, Vim ti sta ingannando. Ci sono plugin per dire a Vim di non aggiungere la newline finale se preferisci. –

1

In \ n di Windows' 'è il separatore tra le linee, ma in linux' \ n 'è il segno finale su qualsiasi linea. Vim non c'è niente di male nell'aggiungere '\ n' alla fine delle linee nella piattaforma linux ma seguendo la definizione di os.

Problemi correlati