Python 零基础教程:从零开始构建你的首个命令行界面(CLI)应用!

终端?CLI?它们到底有啥用?🤔

朋友们,你们有没有这样的经历——在电视剧里看到黑客们敲着密密麻麻的代码,屏幕上疯狂滚动着指令,看起来就像是掌控世界的样子?😎 其实,那些神秘的窗口,就是 命令行终端,而他们运行的,就是CLI(Command Line Interface,命令行界面)应用

CLI 应用的本质,就是一个可以在终端里运行的程序,你可以用它来执行各种任务,比如管理文件、运行服务器、查询天气,甚至写个计算器来帮你算账!今天,花姐就来手把手教你,用 Python 写一个简单但超实用的 CLI 计算器,让你轻松踏入 CLI 世界的大门!🚀


一、CLI 应用的基本组成部分

要理解 CLI 应用,我们得搞清楚几个关键概念:

命令(Command):就是你在终端里敲的指令,比如 gitlspython 这些都是命令。
子命令(Subcommand):有些命令可以带不同的子命令,比如 git commit 中的 commit,就是 git 这个命令的一个子命令。
参数(Arguments):用户输入的额外信息,比如 git commit -m "提交说明" 里的 "提交说明" 就是参数。
选项(Options/Flags):用来调整命令行为,比如 -mgit commit 的一个选项。

今天,我们就来创建一个 Python CLI 计算器,它会支持四种运算:加、减、乘、除,并且可以通过命令行参数来指定计算内容!📊


二、项目结构:该怎么组织文件?📁

在开始写代码之前,我们先确定项目结构,这样代码更清晰,后期维护也更方便。

cli_calculator/
├── cli_calculator/
│   ├── calculator.py  # 计算器核心逻辑
│   ├── __init__.py    # 让 Python 把这个文件夹当作模块
│   └── __main__.py    # CLI 入口文件
├── README.md         # 项目介绍
├── requirements.txt  # 依赖库
└── setup.py          # 打包和安装配置

其中:

  • calculator.py:计算器的核心逻辑(加、减、乘、除)。
  • __main__.py:处理用户输入,解析命令行参数,调用 calculator.py 里的函数。
  • requirements.txt:列出项目依赖,让别人可以轻松安装你的 CLI 工具。
  • setup.py:让 CLI 应用支持 pip install,这样你就能随时随地运行它!

  • 三、编写计算器逻辑(calculator.py)📖

    首先,我们要写一个 Calculator 类,封装加减乘除的逻辑。

    📌 代码如下

    class Calculator:
        """一个简单的 CLI 计算器"""
    
        def add(self, a, b):
            """加法运算"""
            return a + b
    
        def sub(self, a, b):
            """减法运算"""
            return a - b
    
        def mul(self, a, b):
            """乘法运算"""
            return a * b
    
        def div(self, a, b):
            """除法运算(注意不能除以 0)"""
            if b == 0:
                raise ValueError("错误:除数不能为 0!")
            return a / b
    

    📌 代码解释

  • 这个 Calculator 类定义了 add()sub()mul()div() 方法,分别处理加、减、乘、除运算。
  • 除法 div() 方法里加了一个错误检查,如果用户输入 0 作为除数,会抛出 ValueError,防止程序崩溃。

  • 四、用 argparse 解析命令行参数(main.py)🖥

    现在,我们来编写 CLI 的核心部分,使用 argparse 模块解析命令行参数。

    📌 代码如下

    import argparse
    from cli_calculator.calculator import Calculator
    
    def main():
        """CLI 主入口"""
        calculator = Calculator()
    
        # 创建 ArgumentParser 对象
        parser = argparse.ArgumentParser(prog="计算器",description="简单的 CLI 计算器", epilog="示例用法:cli_calculator add 1 2")
    
        # 创建子命令解析器
        subparsers = parser.add_subparsers(title="操作符", dest="operator",required=True)
    
        # 添加子命令(加、减、乘、除)
        for op in ["add", "sub", "mul", "div"]:
            sub_parser = subparsers.add_parser(op, help=f"{op} 两个数")
            sub_parser.add_argument("a", type=float, help="第一个数")
            sub_parser.add_argument("b", type=float, help="第二个数")
            sub_parser.add_argument("-p","--precision", type=int, default=2, help="保留的小数位数")
            
        # 解析参数
        args = parser.parse_args()
        print(args)
        # 执行对应运算
        if args.operator:
            try:
                operation = getattr(calculator, args.operator)
                result = round(operation(args.a, args.b), args.precision)
                print(f"计算结果 :{result}")
            except ValueError as e:
                print(f"错误:{e}")
        else:
            parser.print_help()
    
    if __name__ == "__main__":
        main()
    

    📌 代码解释

  • argparse.ArgumentParser():创建命令行解析器,并定义 CLI 的描述信息。
  • parser.add_subparsers():创建子命令解析器,用于解析 addsubmuldiv 这些操作符。
  • getattr(calculator, args.operator):动态调用 Calculator 类中的方法(比如 add())。
  • round(result, args.precision):计算结果四舍五入,控制小数位数。

  • 五、安装和运行 CLI 工具

    📌 1. 创建 requirements.txt(列出项目依赖):

    setuptools
    

    📌 2. 创建 setup.py(让 CLI 工具可安装):

    from setuptools import setup
    
    setup(
        name="cli_calculator",
        version="1.0",
        packages=["cli_calculator"],
        entry_points={
            "console_scripts": ["cli_calculator = cli_calculator.__main__:main"],
        },
        description="一个简单的 Python CLI 计算器",
        author="花姐",
        python_requires=">=3.6",
    )
    
  • name=“cli_calculator”:指定你的包的名字是 cli_calculator。这个名字在 Python 包管理平台(比如 PyPI)中是唯一的,用户通过这个名字来安装包。

  • version=“1.0”:指定包的版本号是 1.0,你可以根据包的更新更改版本号。

  • packages=[“cli_calculator”]:这里列出了包含在包中的所有 Python 包。cli_calculator 是该包的主模块,它是一个文件夹,其中包含了实现代码。

  • entry_points:这个字段定义了一个或多个控制台脚本,这样用户可以通过命令行使用你的程序。具体来说:

  • "console_scripts": ["cli_calculator = cli_calculator.__main__:main"] 表示当用户在命令行中输入 cli_calculator 时,会调用 cli_calculator/__main__.py 文件中的 main() 函数。
  • 这种方式让你的 Python 包可以通过命令行直接运行,像一个普通的命令行工具。
  • description=“一个简单的 Python CLI 计算器”:这是包的简短描述,会在 PyPI 上显示,帮助用户理解这个包的功能。

  • author=“花姐”:指定包的作者名字。这里的作者是“花姐”,就是我啦!

  • python_requires=“>=3.6”:这个字段指定了包的 Python 版本要求。表示该包要求 Python 版本为 3.6 或更高版本。

  • 📌 3. 安装 CLI 工具

    pip install -e .
    

    💡 解释

  • pip install -e . 这个命令的 -e 代表 editable mode(可编辑模式),意思是我们安装的是当前项目的源码版本,而不是一个打包好的固定版本。
  • 这样,我们修改代码后不需要重新安装,直接运行命令行工具就能看到最新效果,特别适合开发阶段!
  • pip install -e . -e的后面跟了一个千万被忘记。. 在 Unix 和 Windows 命令行中表示当前目录。
    所以 pip install -e . 的意思是:在当前目录下查找 setup.py 文件,然后安装这个 Python 包。
  • 📌 什么时候去掉 -e?🤔
    pip install -e . 适用于开发阶段,但如果你的项目已经完成,或者你想要安装一个稳定的、独立的版本,那就该去掉 -e 了,直接使用:

    pip install .
    

    这样,pip 会把你的包复制到 site-packages 目录,不会再链接到源码目录,即使修改代码,安装的版本也不会自动更新。


    📌 pip install -e .pip install . 的区别

    命令 用途
    pip install -e . 开发阶段:以“可编辑模式”安装,修改源码会立即生效。
    pip install . 发布/部署阶段:安装一个固定版本,修改源码不会影响已安装的包。

    📌 4. 运行 CLI 计算器

    cli_calculator add 6 9
    cli_calculator div 6 9 -p 5
    

    六、总结:你学到了什么?🎯

    ✅ 了解了 CLI 应用的基本概念。
    ✅ 掌握了 argparse,让 Python 脚本支持命令行参数。
    ✅ 用 Python 实现了一个 CLI 计算器,支持加减乘除运算。
    ✅ 学会了如何打包 CLI 应用,让它支持 pip install

    💡 现在,你可以尝试扩展这个 CLI 计算器,比如增加 sqrt(开方)、power(幂运算)等新功能!你就是命令行世界的新晋黑客了!😎

    作者:花小姐的春天

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python 零基础教程:从零开始构建你的首个命令行界面(CLI)应用!

    发表回复