gpt4 book ai didi

python - 如何在 Python 中使用 getopt 传递灵活数量的参数?

转载 作者:行者123 更新时间:2023-12-01 05:55:10 25 4
gpt4 key购买 nike

我是 Python 新手,我从 getopt 学到的是我可以在执行 python 脚本时传递命令行参数。现在我的问题是,有没有办法不设置我可以在命令行中传递的参数数量?

我的代码看起来像这样:

try:
opts, args = getopt.getopt(sys.argv[1:],"h:1:2:3:4:",["help=", "1week=","2week=", "3week=", "4week="])
except getopt.GetoptError:
print 'test.py -1 <week 1> -2 <week 2> -3 <week 3> -4 <week 4>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'test.py -1 <week 1> -2 <week 2> -3 <week 3> -4 <week 4>'
sys.exit()
elif opt in ("-1", "--1week"):
week1 = arg
elif opt in ("-2", "--2week"):
week2 = arg
elif opt in ("-3", "--3week"):
week3 = arg
elif opt in ("-4", "--4week"):
week4 = arg

并运行上面的代码我使用python test.py -1 89 -2 88 -3 87 -4 86 。无论如何我可以修改这个,我不必总是给出 4 个参数,但也可以给出 3 个?我希望它能够灵活,有时我可能会给出 3 个或 4 个参数。

最佳答案

如果您的程序接受一个或多个周数:

from argparse import ArgumentParser

parser = ArgumentParser()
parser.add_argument('weeks', nargs='+', type=int, help='weeks numbers')
args = parser.parse_args()
print(args)

示例

$ python your_script.py 1 2 3

输出

Namespace(weeks=[1, 2, 3])

要从上面的 args.weeks 生成 'weekly_1_2_3':

result = 'weekly_' + '_'.join(map(str, args.weeks))

1 2 3 4 命令行的结果是 'weekly_1_2_3_4'

关于python - 如何在 Python 中使用 getopt 传递灵活数量的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com