美文网首页
Python 二级命令行参数

Python 二级命令行参数

作者: 家中古词 | 来源:发表于2018-12-06 19:50 被阅读38次

    有时脚本命令需要比较复杂的二级命令,例如说 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)
    

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

    相关文章

      网友评论

          本文标题:Python 二级命令行参数

          本文链接:https://www.haomeiwen.com/subject/wshacqtx.html