使用PyCharm调试接受命令行参数的脚本时,我可以指定接受“一个或多个”参数吗?

时间:2018-11-12 15:58:46

标签: python pycharm

我正在尝试调试使用命令行选项的脚本,但是它们可以是一个或多个数字。例如

$ test.py -c 1 2 3

$ test.py -c 5

通过Pycharm调试时,可以在脚本参数窗口中以某种方式将此选项设置为“一个或多个”选项吗?还是必须更改配置以测试每个选项? 谢谢:)

1 个答案:

答案 0 :(得分:0)

不确定这是否正是您的意思,但是如果您在某些参数周围用引号指定“参数”字段,则它们将被视为一个,例如:

# Parameter field in PyCharm: -c "1 2" -f filename.txt
>>> sys.argv[1:]
['-c', '1 2', '-f', 'filename.txt']  # 1 and 2 together in the same string

但是请注意,即使您将ArgumentParsernargs='+'传递给nargs='*'add_argument()也会期望所有参数。因此,如果您使用ArgumentParser类,则可能不想使用引号:

# Parameter field in PyCharm: -c 1 2 -f filename
>>> sys.argv[1:]
['-c', '1', '2', '-f', 'filename.txt']

或多或少,ArgumentParser类将对nargs='+'nargs='*'进行以下操作:

  • 开始从左到右逐一扫描参数
  • 一旦找到它可以识别的关键字(例如-c),它将使用后面的所有参数,直到到达它可以识别的另一个关键字(例如-f)或该关键字的末尾。列表
  • 找到的所有这些中间参数都将放入列表中,并与第一个参数相关联(例如-c

即使您没有使用ArgumentParser类,也有自己的解析代码,我还是建议您采用类似的解析策略。对于脚本用户而言,它可能更直观,再加上您以后无需在某些时候手动拆分参数(例如'1 2'.split())。