<p>你可以用<a href="http://pypi.python.org/pypi/autopep8">autopep8</a>!当你为自己煮一杯咖啡时,这个工具会很高兴地移除所有那些讨厌的PEP8违规行为,这些行为不会改变代码的<em>含义。</p>
<p>通过pip安装:</p>
<pre><code>pip install autopep8
</code></pre>
<p>将此应用于特定文件:</p>
<pre><code>autopep8 py_file --in-place
</code></pre>
<p>或者对于您的项目(递归地),<em>verbose选项会给您一些关于项目进展的反馈:</p>
<pre><code>autopep8 project_dir --recursive --in-place --pep8-passes 2000 --verbose
</code></pre>
<p><em>注意:有时默认的100次传递是不够的,我将其设置为2000次,因为它相当高,将捕获所有文件,但最麻烦的文件除外(一旦发现没有可解决的pep8违规,它将停止传递)。。。</em></p>
<h3>在这一点上,我建议重新测试和做一个承诺!</h3>
<p>如果您想<em>“full”</em>PEP8合规性:我使用的一种策略是如上所述运行autopep8,然后运行PEP8,它将打印剩余的违规行为(文件、行号和什么):</p>
<pre><code>pep8 project_dir --ignore=E501
</code></pre>
<p>并分别手动更改(例如E712s-与布尔值比较)。</p>
<p><em>注意:autopep8提供了一个<code>--aggressive</code>参数(无情地“修复”这些含义改变的违规行为),但要注意,如果您确实使用攻击性的,则可能需要调试。。。(例如,在numpy/熊猫中,<code>True == np.bool_(True)</code>但不是<code>True is np.bool_(True)</code>!)</em></p>
<h3>您可以检查每种类型(之前和之后)的违规次数:</h3>
<pre><code>pep8 --quiet --statistics .
</code></pre>
<p>注意:我认为E501s(行太长)是一个特殊情况,因为在您的代码中可能会有很多这样的代码,有时这些代码不会被autopep8更正。</p>
<p>作为一个例子,我对<a href="http://pandas.pydata.org/">pandas</a>代码库使用<a href="https://github.com/pydata/pandas/pull/2632">applied this</a>技术。</em></p>