Python 命令行应用 - 创建项目结构
27 February 2015
我喜欢使用 Python 创建命令行应用,它写起来比 Bash 脚本更有逻辑直观。
Python 有很多库提供给你解析命令行参数和运行其它 Shell 命令,同时你还能充分利用强大的面向对象语言的优势;你还可以使用 Python 的单元测试来帮助你检验和注释你的应用。
你可以在 github 找到这个教程的 demo。
结构化你的应用
从我的经验来看,Python最好的目录结构就是将可执行脚本放到 bin 目录中,你的项目放到项目名目录下。这样,你可以分离你的核心功能,保持可复用性。这也是其它类型应用的创建标准规则。
在 project 目录下,你应该使用 main.py 作为应用的主要访问入口。你的通用函数应该放到 lib 目录下,测试脚本放在 tests 目录下。结构如下:
├── README.md
├── bin
│ ├── project
│ └── project.bat
└── project
├── lib
├── main.py
└── tests
你的应用可以这样执行:
$ bin/project
分离参数,shell 命令和功能函数
和所有面相对象编程一样,你应该遵循 关注点分离(SoC)原则。由于用 Python 读取命令行参数,处理选项和执行其他 Shell 命令是在它方便了,导致时常忽略了这个原则。
解析命令行参数
创建一个定义和收集命令行参数的类。Python 提供了 argparse(原教程使用的旧库