PyCharm 自动格式化 Python 代码

版权声明:本文为空谷原创文章,未经博主允许不得转载。如需转载请添加微信:kongguxs001 https://blog.csdn.net/simplehouse/article/details/90032248

autopep8 是一个将 Python 代码自动排版为 PEP8 风格的工具,在 PyCharm 中直接格式化代码可以使用 autopep8。

一、autopep8 简介

使用 autopep8 前我们有必要先了解下 PEP 8 – Style Guide for Python Code

https://pypi.python.org/pypi/autopep8/

二、安装和使用 autopep8

autopep8 是一个开源的命令行工具,它能够将 Python 代码自动格式化为 PEP8 风格。autopep8 使用 pycodestyle 工具来决定代码中的哪部分需要被格式化,这能够修复大部分 pycodestyle 工具中报告的排版问题。autopep8 本身也是一个 Python 语言编写的工具,因此,我们可以直接使用 pip 进行安装:

pip install autopep8

我们来看一个完整的例子,本例中使用的代码如下:

import os, sys  
 
def main():  
    print [item for item in os.listdir('.') if item.endswith('.py')];  
    print sys.version  
 
if __name__ == '__main__':  
    main()

这段代码存在三个问题:

  1. 导入的时候,应该每一行只导入一个包;
  2. 包导入和函数定义之间应该空两行;
  3. Python 代码末尾不需要分号。

接下来,我们将使用 pycodestyple 检查这段代码,然后使用 autopep8 将代码格式化成符合 PEP 8 风格的代码。

使用 pycodestyle 检查代码可检测到代码中有三个地方不符合 PEP 8 规范,如下所示:

pycodestyle hello.py  
hello.py:1:10: E401 multiple imports on one line  
hello.py:3:1: E302 expected 2 blank lines, found 1  
hello.py:4:69: E703 statement ends with a semicolon

使用 autopep8 格式能够转换 Python 代码。在这个例子中,autopep8 顺利地帮我们修复了所有问题,如下所示:

$ autopep8 hello.py  
import os  
import sys  
 
 
def main():  
    print [item for item in os.listdir('.') if item.endswith('.py')]  
    print sys.version  
 
 
if __name__ == '__main__':  
    main()

这个时候如果查看源文件的话,会发现还是和原来一样,并没有修正为符合 PEP 8 规范的代码。前面说过,不指定 –in-place 选项,只会将结果输出到命令行。如果我们使用 –in-place 选项,将不会有任何输出,autopep8 会直接修改源文件。

$ autopep8 --in-place hello.py 

三、Pycharm 安装 autopep8

Pycharm 安装 autopep8

pip 安装 autopep8: pip install autopep8

PyCharm -> Preferences -> Tools -> Extends Tools -> 点击 + 加号

Name: autopep8
Tools settings:

Programs: autopep8
Parameters: --in-place --aggressive --aggressive $FilePath$
Working directory: $ProjectFileDir$
Advanced Options -> Output Filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

参考

  1. https://wsgzao.github.io/post/autopep8/
  2. http://lovesoo.org/add-autopep8-to-pycharm.html

猜你喜欢

转载自blog.csdn.net/simplehouse/article/details/90032248