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) < 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的主要内容,如果未能解决你的问题,请参考以下文章