将argeparse传递为us-east-1,us-east-2,us-east-3
# Setup commandline arguments
parser = argparse.ArgumentParser(description='using Terraform')
parser.add_argument(
'-r',
'--region',
type=str,
required=True,
help='Region in which the ec2 need to be created')
然后尝试在每个区域进行循环
for region_1 in ([region]):
print(region_1)
对于print(region_1),它打印所有区域,但我希望它循环循环并一次打印一个区域。请让我知道可以做什么
答案 0 :(得分:2)
如果您想更好地定义应如何传递参数,则此answer解决了您的问题。
例如,您应该像--region 'us-east-1' 'us-east-2' 'us-east-3'
一样传递它。并使用nargs
定义您的参数选项,例如:
parser.add_argument(
'-r',
'--region',
nargs='+',
type=str,
required=True,
help='Region in which the ec2 need to be created'
)
如果您要使用逗号分隔字符串,请执行以下操作:
for r in region.split(","):
print(r)
答案 1 :(得分:2)
您可以通过将nargs
中的-r/--regions
用于argparse
来做到这一点,
$ cat arg.py
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument(
'-r',
'--regions',
dest='regions',
nargs='+',
required=True,
help='foo bar'
)
args = parser.parse_args()
for region in args.regions:
print(region)
$ python arg.py -r us_east us_west us_east1
us_east
us_west
us_east1
答案 2 :(得分:0)
您正在遍历包含一个元素的列表:region
。 [region]
是一个包含region
的列表,就像[1]
是一个包含1
的列表一样。
在迭代之前不要将变量包装在另一个列表中:
for region_1 in region: