【问题标题】:How to adjust Python's sys.argv to change its length accordingly如何调整 Python 的 sys.argv 以相应地更改其长度
【发布时间】:2021-12-07 01:06:55
【问题描述】:

我一直在尝试使 sys.argv[] 根据用户输入的参数数量来更改其输出。我正在努力做到这一点,如果没有 sys.argv[5],那么它将使用 sys.argv[4]。目前,当我尝试将 sys.argv[5] 留空时,我总是尝试解决我的问题 IndexError: list index out of range 这两种想法:

if len(sys.argv) is 4:
    location = int(sys.argv[1])
    order = sys.argv[2]
    amount = sys.argv[3]
    user = sys.argv[4]
    company= sys.argv[4]
    print(company)
else:
    location = int(sys.argv[1])
    order = sys.argv[2]
    amount = sys.argv[3]
    user = sys.argv[4]
    company= sys.argv[5]
    print(company)

还尝试将 "if len(sys.argv) is 4:" 更改为 "if sys.argv[5] != True:"。我已经阅读了一些关于解决索引的帖子,但只是不知道如何实际定制代码以供我自己使用。

谢谢!

【问题讨论】:

  • 列出索引从零开始,如果len(sys.argv) == 4,那么第一个索引是0,最后一个索引是3
  • 你为什么使用is
  • 是的,我刚刚发现索引实际上是 5 而不仅仅是 4 @lain Shelvington。
  • 我应该使用“==”@klutt 吗?我想知道它,因为我经常使用'is',它仍然有效。
  • @Mythorim 你应该做的是阅读两者的作用。这里使用is是一件很奇怪的事情。

标签: python if-statement arguments parameter-passing index-error


【解决方案1】:

您可以使用try/except 块,如下所示,如果存在index 5,则使用它,否则使用index 4

if len(sys.argv) >= 4:
    location = int(sys.argv[1])
    order = sys.argv[2]
    amount = sys.argv[3]
    user = sys.argv[4]
    try:
        company= sys.argv[5]
    except IndexError:
        company= sys.argv[4]
    print(company)
else:
    print('Provide minimum 4 args')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多