我知道有一些工具可以验证您的Python代码是否符合PEP8,例如,有在线服务和python模块。
但是,我找不到一个服务或模块,它可以将我的PEP8文件转换为一个自包含的、有效的Python文件。有人知道有没有吗?
我认为这是可行的,因为PEP8完全取决于代码的外观,对吗?
发布于 2014-03-26 08:38:10
不幸的是,"pep8风暴“(整个项目)有一些负面的副作用:
作为另一种选择(感谢@y表示这个想法),我编写了一个小包,其中只包括您自上次提交/分支以来一直在处理的那些行:
基本上把这个项目留给一个小总比你发现的好
pip install pep8radius假设您已经在master上完成了您的工作并准备提交:
# be somewhere in your project directory
# see the diff with pep, see the changes you've made since master
pep8radius master --diff
# make those changes
pep8radius master --diff --in-place或者,清除上次提交以来您已经完成的新行:
pep8radius --diff
pep8radius --diff --in-place
# the lines which changed since a specific commit `git diff 98f51f`
pep8radius 98f51f --diff基本上,https://github.com/hayd/pep8radius是将autopep8应用于git/hg输出中的行(来自https://stackoverflow.com/questions/23975995/git-diff-branch-against-working-tree-not-including-merges)。
这个脚本目前与git和hg一起工作,如果您使用的是其他东西,并且希望它能够运行请发表评论/发行/公关!
发布于 2013-01-14 23:09:23
你可以用autopep8!当你为自己煮了一杯咖啡时,这个工具愉快地消除了所有那些烦人的PEP8违规行为,它们并没有改变代码的含义。
通过pip安装:
pip install autopep8将此应用于特定的文件:
autopep8 py_file --in-place或者对您的项目(递归),详细选项给您一些反馈,它是如何进行
autopep8 project_dir --recursive --in-place --pep8-passes 2000 --verbose注意:有时默认的100次传递是不够的,我将其设置为2000,因为它相当高,并且会捕获除最麻烦的文件之外的所有文件(一旦发现没有可解决的pep8违规,就停止传递).
在这一点上,我建议重新测试和执行提交!
如果您想要“完全”遵守PEP8 :我所使用的一种策略是按照上面的方式运行autopep8,然后运行PEP8,它会打印出其余的违规行为(文件、行号等等):
pep8 project_dir --ignore=E501并单独手动更改(例如,E712s --与布尔值的比较)。
注意: autopep8提供了一个--aggressive参数(无情地“修复”这些改变了意义的违规行为),但是如果你确实使用了侵略性,你可能不得不调试.(例如,在numpy/大熊猫‘True == np.bool(真)_ _but not_ _True is np.bool(真)`__!)
您可以检查每种类型的违规次数(在此之前和之后):
pep8 --quiet --statistics .注意:我认为E501s (行太长)是一个特例,因为在您的代码中可能会有很多这样的情况,有时autopep8没有纠正这些错误。
作为一个例子,我将https://github.com/pydata/pandas/pull/2632技术应用到http://pandas.pydata.org/代码库中。
发布于 2015-05-26 14:11:24
@Andy很好地概述了autopep8。除此之外,还有一个名为pep8ify的包,它也做同样的事情。
然而,这两个包只能删除林特错误,但它们不能格式化代码。
little = more[3: 5]在pep8ifying之后,上面的代码也保持不变。但代码看起来还不太好。您可以使用像雅普夫这样的格式化程序,即使代码符合PEP8,它也会格式化代码。以上代码将被格式化为
little = more[3:5]有时,这甚至会破坏您的手动格式化。例如
BAZ = {
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
}将被转换为
BAZ = {[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]}但你可以告诉它忽略某些部分。
BAZ = {
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]
} # yapf: disable摘自我以前的博文:自动PEP8 &格式化您的Python!
https://stackoverflow.com/questions/14328406
复制相似问题