如何建立一个带有argparse运算符的命令行界面?

时间:2019-02-25 17:50:17

标签: python argparse operation

如何使用argparse构建以下内容:

简介:python3 program.py [operation] [options] target

操作:安装,卸载,更新或删除(您选择一个)。

我希望这些操作具有自己的一组选项。我不是在寻找特定的代码,只是一些一般的指导。

2 个答案:

答案 0 :(得分:3)

听起来像您想要subparsersdest='subparser_name'位使您可以知道调用了哪个子解析器。

import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='subparser_name')
install_parser = subparsers.add_parser('install')
install_parser.add_argument('target')
subparsers.add_parser('uninstall')

print(parser.parse_args(['uninstall']))
print(parser.parse_args(['install', 'target=foo']))
print(parser.parse_args(['uninstall', 'install', 'target=foo']))

输出:

Namespace(subparser_name='uninstall')
Namespace(subparser_name='install', target='target=foo')
usage: test.py [-h] {install,uninstall} ...
test.py: error: unrecognized arguments: install target=foo

答案 1 :(得分:0)

这是我为类似要求所做的工作,但这可能是非常基本的方法和初学者水平:
示例(getopt):

#!/usr/bin/python
import sys, getopt
def main(argv):
   arg=''
   try:
      opts, args = getopt.getopt(argv,"i:u:r:",["install=","update=","remove="])
   except getopt.GetoptError:
      print('test.py -i <myinput>')
      sys.exit(2)
   for opt, arg in opts:
      if opt in ("-i", "--install"):
         #Your operation
         print('installing something based on my input',arg)
         sys.exit()
      elif opt in ("-u", "--update"):
         #Your operation
         print('updating something based on my input',arg)
         sys.exit()
      elif opt in ("-r", "--remove"):
         #Your operation
         print('removing something based on my input',arg)
         sys.exit()  

if __name__ == "__main__":
   main(sys.argv[1:])

参考:Link

用法:

python test.py -i myinput

输出:

installing something based on my input myinput