python和法语的新手很抱歉任何英语错误:)。 我正在做一些我需要使用argparse的东西。 这是我遇到问题的代码:
parser = argparse.ArgumentParser()
parser.add_argument('--create n file', dest='create', nargs=2,
default=(1,'world1.json'), help='Create a party of n player with mission parameters in file')
我正在尝试找到一种方法来将n和file都设置为其他值,或者只设置其中一个。 n是一个int并提交一个str。
以下是我想要使用以下命令获得的内容:
python mission.py - 创建2 ##期望结果> create = [2,'world1.json']
python mission.py - 创建world2.json #expected result> create = [1,'world2.json']
python mission.py - 创建3 world2.json #expected result> create = [3,'world2.json']
当使用--create(有或没有指定n / file)时,我需要使用list作为参数启动一个函数。
我尝试过多次并多次阅读argparse文档但无法找到方法。
感谢您的帮助。
答案 0 :(得分:1)
以下代码返回列出的用例的预期结果。我决定使用额外的函数来处理参数,因为程序必须接受传递的第一个参数的int或字符串。
我使用"尝试"阻止查看在继续之前是否可以将单个参数解析为int。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--create n file', dest='create', nargs='+', default=(1,'world1.json'),
help='Create a party of n player with mission parameters in file')
args = parser.parse_args()
def get_n_file(arg):
if len(arg)==1:
try:
i = int(arg[0])
result = int(arg[0]), 'world'+str(arg[0])+'.json'
except:
s = arg[0]
result = 1, s
return result
elif len(arg)==2:
return int(arg[0]), arg[1]
print(args.create)
n, f = get_n_file(args.create)
print(n, f)