如何使用argparse构建以下内容:
简介:python3 program.py [operation] [options] target
操作:安装,卸载,更新或删除(您选择一个)。
我希望这些操作具有自己的一组选项。我不是在寻找特定的代码,只是一些一般的指导。
答案 0 :(得分:3)
听起来像您想要subparsers
。 dest='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