Python 二级命令行参数

有时脚本命令需要比较复杂的二级命令,例如说 git addgit commit,有独立的一套参数。而同时对这些命令本身可能也有命令修饰。这时就希望将命令行参数分解成两个部分,得到 (cmd, args)。其中 cmd 是一级的命令,指示要进行何种操作。args 是这个命令的参数列表,每个项可以是 - 或者 -- 开头的选项,也可以其它的。

Python 的 argparse 模块已经想到了这个需求。只需要如下这样做即可:

import argparse
import sys

def get_cmd_args():
    ap = argparse.ArgumentParser()
    ap.add_argument('cmd')
    ap.add_argument('args', nargs=argparse.REMAINDER)
    args = ap.parse_args()
    return args.cmd, args.args

def main():
    cmd, args = get_cmd_args()
    print(cmd, args)

main()

选择合适的 cmd 之后,再对剩余的 args 调用 ap.parse_args(args),即可做到二级管理。

此外,Google 开源过一个包叫做 fire。提供更便捷的命令行解析。

#! /use/bin/env python3
# This is cli.py
import fire

class Cli:
  def cmd1(self, arg1, arg2):
    # cmd1 arg1 arg2
    pass
  def cmd2(self, arg1, opt=1):
    # cmd2 arg2 --opt=2
    pass
  def cmd3(self, *args):
    # cmd3 arg1 [arg2 ...]
    pass

fire.Fire(Cli)

也可以做到二级命令管理,但显得有些粗放。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容