2016-03-30 5 views
0

私は自分のコードの内部にPythonのPEP8モジュールを使用しています。Python PEP8モジュールの出力を格納

import pep8 

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

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

これが出力される。

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

しかし、この結果は、端末上に印刷され、R「」に割り当てられている最終的な値は、8(エラーの即ち総数)です。

これらのエラーを変数に保存したいと考えています。これどうやってするの?

EDIT:これを行うには、少なくとも2つの方法がありますhttp://paste.fedoraproject.org/347406/59337502/raw/

+1

にdownvotersポイントあればそれは美しいだろうこの質問に何が間違っていますか?何か不足していますか? –

答えて

1

:ここ はtest.pyファイルです。最も簡単なのは、あなたのレジャーでファイルを読み、テキストファイルにsys.stdoutをリダイレクトすることです:

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 

また、あなたがStringIOを使用して変数に書き込むことができます。

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") 
関連する問題