【问题标题】:Why do I get IndexError: list index out of range为什么我得到 IndexError: list index out of range
【发布时间】:2019-10-12 03:30:12
【问题描述】:

为了向您解释我的问题,我的客户发送了一个用户名和密码... 客户端像这样格式化它

文件 = salt + 用户名 + "splitme" + salt + 密码 通过 tls 加密文件(连接到服务器时)

发送到服务器

服务器解密文件并尝试在“splitme”处拆分

代码:

data = data.split("splitme", 1)

    username_salted = data[0]
    password_salted = data[1]

然后Python停止程序并说

password_salted = 数据[1] IndexError: 列表索引超出范围

不知道是什么问题……

【问题讨论】:

    标签: python list sockets split client


    【解决方案1】:

    因为data 是一个包含 1 个元素的列表,因为第一个元素访问没有引发错误。

    你解码data了吗?成功了吗? data 可能不包含“splitme”,在这种情况下,您会得到一个列表,其中包含您尝试拆分的全部内容作为唯一元素。

    你验证data的内容了吗?您有权访问源代码吗?你能运行它吗?在这种情况下,您可以更改代码以进行一些额外的日志记录,运行调试器(例如 ipdb3)或使用跟踪模块查看执行的内容。

    【讨论】:

    • 我认为 1 仅表示一个拆分...但即使我删除 1,程序也会将其分为两个扇区,例如 [salt-username-splitme-salt-password] 和之后拆分看起来像这样 [salt-username, salt-password],然后 python 打印一个刹车,然后有一个 [""] 来了,然后引发错误
    • 该数字是要进行的最大拆分数。您的问题是没有什么可拆分的,并且发生了 0 个拆分。
    • 你拆分的结果是什么?如果发生至少 1 次拆分,您将至少有 2 个元素,从而使索引为 1 的元素访问合法。您的错误表明情况并非如此。
    • 我认为错误在于 split 函数写入了第二个空列表???
    • 不,如果你有一个空列表,即使是第一次访问,data[0] 也会超出范围。
    猜你喜欢
    • 2020-10-16
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    相关资源
    最近更新 更多