2016-03-30 19 views
0

Kodumun içinde Pyt8 python modülünü kullanıyorum. Mağaza Python PEP8 modül çıkışı

import pep8 

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

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

Bu

çıktısı:

./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) 

Ancak bu sonuç, terminal ve 'r' atanan son değerine basılır 8 (hataların, yani toplam sayısı) olduğu.

Bu hataları bir değişkende saklamak istiyorum. Bunu nasıl yapabilirim?

DÜZENLEME

: Bunu yapmak için en az iki yolu vardır http://paste.fedoraproject.org/347406/59337502/raw/

+1

Bu downvoters noktaları eğer güzel olurdu en basit bir metin dosyasına sys.stdout yöneltmek olan, sonra boş yer dosyayı okumak bu sorunun nesi var? Bir şey mi eksik? –

cevap

1

: Burada test.py dosyasıdır. StringIO kullanarak

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 

Alternatif bir değişkene yazabilirsiniz:

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")