【发布时间】:2018-03-26 03:59:46
【问题描述】:
让我们有一个以数字作为输入的程序。尽管如此,可以指定基数。未指定时,数字为十进制。
# 10 in decimal
./get_num.py 10
# 10 in octal
./get_num.py -o 12
# 10 in binary
./get_num.py -b 1010
我想使用 Python Argparse 模块,但找不到实现此结果的方法。我知道有一个使用 mutually exclusive group 的选项,但这并不适合,因为那时需要始终指定基数。
型号代码:
#!/usr/bin/env python3
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('base')
parser.add_argument('-o')
parser.add_argument('-b')
args = parser.parse_args()
if args.o: print('octal', args.o)
if args.b: print('binary', args.b)
else: print('decimal', args.base)
【问题讨论】:
-
如果你把基础放在条件中会怎样。
if base:并创建一个默认模板 -
您的意思是
base是位置性的,而octal和binary是可选的? -
没有基数可以是可选的。但是您可以编写一个条件来检查是否通过了 base。如果没有通过启动基地。发布您的代码,我会看看是否可以添加您需要的内容
-
这是模型问题,所以代码不多。但我会写
标签: python python-3.x parameter-passing argparse