|
|
|
|
移动端

2.6.3 使用autopep8将代码格式化

《Python Linux系统管理与自动化运维》第2章Python生态工具,在本章中,我们将依次介绍Python生态的各种工具,包括:Python内置的小工具(2.1节);包管理工具pip(2.2节);Linux和Windows下的Python编辑器(2.3节);Python交互式编程工具(2.4节);Python调试器(2.5节);Python代码规范检查工具(2.6节)。本节为大家介绍使用autopep8将代码格式化。

作者:赖明星来源:机械工业出版社|2017-09-28 16:27

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

2.6.3 使用autopep8将代码格式化

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

  1. $ pip install autopep8 

autopep8命令的使用方式也很简单,如下所示:

  1. $ autopep8 --in-place optparse.py 

--in-place类似于sed命令的-i选项,如果不包含--in-place选项,则会将autopep8格式化以后的代码直接输出到控制台。我们可以使用这种方式检查autopep8的修改,使用--in-place则会直接将结果保存到源文件中。

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

  1. import os, sys  
  2.  
  3. def main():  
  4.     print [item for item in os.listdir('.') if item.endswith('.py')];  
  5.     print sys.version  
  6.  
  7. if __name__ == '__main__':  
  8.     main() 

这段代码存在三个问题:

1)导入的时候,应该每一行只导入一个包;

2)包导入和函数定义之间应该空两行;

3)Python代码末尾不需要分号。

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

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

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

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

  1. $ autopep8 hello.py  
  2. import os  
  3. import sys  
  4.  
  5.  
  6. def main():  
  7.     print [item for item in os.listdir('.') if item.endswith('.py')]  
  8.     print sys.version  
  9.  
  10.  
  11. if __name__ == '__main__':  
  12.     main() 

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

  1. $ autopep8 --in-place hello.py 

autopep8还存在--aggressive选项,使用该选项会执行更多实质性的更改,可以多次使用以达到更佳的效果。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

征服Python—语言基础与典型应用

Python是目前流行的脚本语言之一。本书由浅入深、循序渐进地讲解如何使用Python进行程序开发。全书内容包括Python安装、开发工具简介、Pyth...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊