您可以使用autopep8 http://pypi.python.org/pypi/autopep8!当你给自己泡一杯咖啡时,这个工具很高兴地删除了所有那些讨厌的 PEP8 违规行为,而这些违规行为并没有改变meaning的代码。
通过 pip 安装:
pip install autopep8
将此应用到特定文件:
autopep8 py_file --in-place
或您的项目(递归),详细选项为您提供一些有关进展情况的反馈:
autopep8 project_dir --recursive --in-place --pep8-passes 2000 --verbose
注意:有时默认的 100 次传递还不够,我将其设置为 2000,因为它相当高,并且会捕获除最麻烦的文件之外的所有文件(一旦发现没有可解决的 pep8 违规,它就会停止传递)...
此时我建议重新测试并进行提交!
如果你想"full"PEP8 合规性:我使用的一种策略是如上所述运行 autopep8,然后运行 PEP8,它会打印剩余的违规行为(文件、行号等):
pep8 project_dir --ignore=E501
并手动单独更改它们(例如 E712s - 与布尔值比较)。
注意:autopep8 提供--aggressive
参数(无情地“修复”这些意义改变的违规行为),但要小心,如果你确实使用激进的你可能必须调试......(例如在 numpy/pandas 中True == np.bool_(True)
但不是True is np.bool_(True)
!)
您可以检查每种类型的违规次数(之前和之后):
pep8 --quiet --statistics .
注意:我认为 E501(行太长)是一种特殊情况,因为您的代码中可能会有很多这样的情况,有时 autopep8 不会更正这些情况。
举个例子,我应用了这个 https://github.com/pydata/pandas/pull/2632技术到pandas http://pandas.pydata.org/代码库。