python开发命令行脚本
工作中会经常需要写一些命令行脚本,如果还是用if,else判断用户输入实在是太丑陋了。这里介绍几个python里的命令行脚本库,可以帮助我们快速开发好用的命令行脚本。
https://docs.python.org/3/library/cmd.html
使用方式是继承Cmd,实现自己的子类。
参数comletekey是自动补全操作,默认值是Tab, 如果不为None 且readline可用的话,命令会自动完成。
这里的readline指的是python实现的 GNU readline 接口(标准python库里没有,Windows系统不支持)。
参数stdin,stdout是输入输出流,默认是sys.stdin,sys.stout。
cmd提供了一个简单的框架,但是功能比较简单,python还有其他的很多第三方库可以用来写命令行程序。
https://www.cnblogs.com/xueweihan/p/12293402.html 这篇文章对比了各个库的功能,贴在这里:
看起来fire是最简单的,来试一下。
fire 则是用一种面向广义对象的方式来玩转命令行,这种对象可以是类、函数、字典、列表等,它更加灵活,也更加简单。你都不需要定义参数类型,fire 会根据输入和参数默认值来自动判断,这无疑进一步简化了实现过程。
以下示例为 fire 实现的 计算器程序:
从上述示例可以看出,fire 提供的方式无疑是最简单、并且最 Pythonic 的了。我们只需关注业务逻辑,而命令行参数的定义则和函数参数的定义融为了一体。
不过,有利自然也有弊,比如 nums 并没有说是什么类型,也就意味着输入字符串'abc'也是合法的,这就意味着一个严格的命令行程序必须在自己的业务逻辑中来对期望的类型进行约束。