不带 Pythons argparse 开关的可选参数
optional parameter without a switch with Pythons argparse
(请随意编辑标题以使其更好地理解。)
我想以这两种方式(在 bash 上)调用 Python 脚本而不会出现任何错误。
./arg.py
./arg.py TEST
表示参数(这里取值TEST
)应该是可选的。
使用 argparse 我只知道一种在有开关时创建可选参数的方法(比如 --name
)。
有办法解决这个问题吗?
#!/usr/bin/env python3
import sys
import argparse
parser = argparse.ArgumentParser(description=__file__)
# must have
#parser.add_argument('name', metavar='NAME', type=str)
# optional BUT with a switch I don't want
#parser.add_argument('--name', metavar='NAME', type=str)
# store all arguments in objects/variables of the local namespace
locals().update(vars(parser.parse_args()))
print(name)
sys.exit()
我想你只需要nargs='?'
。
parser = argparse.ArgumentParser(description=__file__)
parser.add_argument('name', nargs='?', default='mydefault')
args = parser.parse_args()
我希望 args
是:
namespace(name='mydefault')
namespace(name='TEST')
(请随意编辑标题以使其更好地理解。)
我想以这两种方式(在 bash 上)调用 Python 脚本而不会出现任何错误。
./arg.py
./arg.py TEST
表示参数(这里取值TEST
)应该是可选的。
使用 argparse 我只知道一种在有开关时创建可选参数的方法(比如 --name
)。
有办法解决这个问题吗?
#!/usr/bin/env python3
import sys
import argparse
parser = argparse.ArgumentParser(description=__file__)
# must have
#parser.add_argument('name', metavar='NAME', type=str)
# optional BUT with a switch I don't want
#parser.add_argument('--name', metavar='NAME', type=str)
# store all arguments in objects/variables of the local namespace
locals().update(vars(parser.parse_args()))
print(name)
sys.exit()
我想你只需要nargs='?'
。
parser = argparse.ArgumentParser(description=__file__)
parser.add_argument('name', nargs='?', default='mydefault')
args = parser.parse_args()
我希望 args
是:
namespace(name='mydefault')
namespace(name='TEST')