python 3.6 在使用 sys.argv 时显示 IndexError

Posted

技术标签:

【中文标题】python 3.6 在使用 sys.argv 时显示 IndexError【英文标题】:python 3.6 displaying IndexError while using sys.argv 【发布时间】:2017-12-30 17:48:50 【问题描述】:

编写的代码

if len(sys.argv) < 2 :
  print('Usage: python pw.py [account] - copy account password')
  account = sys.argv[1]
  sys.exit()

显示的错误

IndexError: 列表索引超出范围

编写代码和显示错误的屏幕截图

【问题讨论】:

如何调用脚本? len(sys.argv) &lt; 2 不保证 sys.argv[1] 存在。 有用的提示,使用begins包,它使使用命令行参数变得更加容易。 pypi.python.org/pypi/begins/0.9 【参考方案1】:

在这里,您正在检查索引是否小于 2,但使用索引为 1 的元素假定列表长度至少为 2 - argv[0] 和 argv[1],此处不保留,因此调用正如预期的那样,它按索引 1 触发错误。所以你必须这样做:

import sys

if len(sys.argv) <= 2 :
    print('Usage: python pw.py [account] - copy account password')

    try:
        account = sys.argv[1]
    except IndexError:
        account = None
    sys.exit()

【讨论】:

【参考方案2】:
if len(sys.argv)<2:
    print('Usage: python pw.py [account] - copy account password')
    sys.exit()
account = sys.argv[1]

上面的代码工作正常: 它检查参数的存在 如果存在,则将其与帐户名称匹配 如果匹配,则转到下一行 Line 23 并从当前字典中复制密码,Line 5 否则打印“不匹配”

之前发生的事情是它正在寻找一个参数,但是为 len(sys.argv)

【讨论】:

以上是关于python 3.6 在使用 sys.argv 时显示 IndexError的主要内容,如果未能解决你的问题,请参考以下文章

Python标准库之Sys模块使用详解

python使用笔记:sys.argv[]的使用

[python]输入与输出

Python命令行传参之sys.argv

Python的sys.argv使用说明

Python的sys.argv使用说明