2016-03-30 5 views
0

Ich verwende PEP8-Modul von Python in meinem Code.Store Python PEP8 Modul Ausgabe

import pep8 

pep8_checker = pep8.StyleGuide(format='pylint') 

pep8_checker.check_files(paths=['./test.py']) 
r = pep8_checker.check_files(paths=['./test.py']) 

Dies ist der Ausgang: gedruckt auf Terminal und dem Endwert

./test.py:6: [E265] block comment should start with '# ' 
./test.py:23: [E265] block comment should start with '# ' 
./test.py:24: [E302] expected 2 blank lines, found 1 
./test.py:30: [W293] blank line contains whitespace 
./test.py:35: [E501] line too long (116 > 79 characters) 
./test.py:41: [E302] expected 2 blank lines, found 1 
./test.py:53: [E501] line too long (111 > 79 characters) 
./test.py:54: [E501] line too long (129 > 79 characters) 

Aber dieses Ergebnis, das ‚R‘ zugeordnet ist, 8 (d.h. Gesamtanzahl der Fehler).

Ich möchte diese Fehler in einer Variablen speichern. Wie kann ich das machen?

EDIT: hier ist die test.py Datei: http://paste.fedoraproject.org/347406/59337502/raw/

+1

Es wäre wenn downvoters Punkte schön sein Was ist falsch an dieser Frage? Fehle ich etwas? –

Antwort

1

es mindestens zwei Möglichkeiten, dies zu tun. Am einfachsten ist es sys.stdout in eine Textdatei zu umleiten, dann lesen Sie die Datei in Ihrer Freizeit:

import pep8 
import sys 

saved_stdout = sys.stdout 
sys.stdout = open('pep8.out', 'w') 

pep8_checker = pep8.StyleGuide(format='pylint') 
pep8_checker.check_files(paths=['./test.py']) 
r = pep8_checker.check_files(paths=['./test.py']) 

sys.stdout.close() 
sys.stdout = saved_stdout 

# Now you can read "pep.out" into a variable 

Alternativ können Sie auf eine Variable schreiben StringIO mit:

import pep8 
import sys 

# The module name changed between python 2 and 3 
if sys.version_info.major == 2: 
    from StringIO import StringIO 
else: 
    from io import StringIO 

saved_stdout = sys.stdout 
sys.stdout = StringIO() 

pep8_checker = pep8.StyleGuide(format='pylint') 

pep8_checker.check_files(paths=['./test.py']) 
r = pep8_checker.check_files(paths=['./test.py']) 

testout = sys.stdout.getvalue() 
sys.stdout.close() 
sys.stdout = saved_stdout 

# testout contains the output. You might wish to testout.spilt("\n")