首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储Python PEP8模块输出

存储Python PEP8模块输出
EN

Stack Overflow用户
提问于 2016-03-30 10:58:42
回答 1查看 415关注 0票数 1

我在代码中使用python的PEP8模块。

代码语言:javascript
复制
import pep8

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

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

这是输出:

代码语言:javascript
复制
./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(即错误总数)。

我想将这些错误存储在一个变量中。我该怎么做?

编辑:这是test.py文件:http://paste.fedoraproject.org/347406/59337502/raw/

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-30 13:23:40

至少有两种方法可以做到这一点。最简单的方法是将sys.stdout重定向到文本文件,然后空闲时读取该文件:

代码语言:javascript
复制
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写入变量。

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36306814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档