你能找出为什么我的代码给我一个IndexOutOfBounds错误吗?

2024-10-01 13:26:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试通过Python填充SQL数据库(用于赋值)。我创建了一个函数来帮助我做到这一点。 但是,当我运行该函数时,我收到一个“列表索引超出范围”的索引错误。我将感谢所有和任何帮助

我试过恢复到一些旧代码,但对当前的问题没有帮助

据我所知,显然没有“field[1]”(否则我就不会收到这个错误)我已经尝试在函数的每一步发生时打印它。。。结果发现,我可以,事实上,打印难以捉摸的价值,但仍然收到一个错误,关于这一行

我已经包括了所有的代码,我相信是相关的,但是,如果你认为我一定是遗漏了什么,请随时与我联系。非常感谢

def populateStudentTable(textFile,targetTable):
    connection = sqlite3.connect(dbName)
    cursor = connection.cursor()
    numRecs = 0
    dataRecs = []
    textRec = textFile.readline()
    while textRec != "":
        numRecs += 1
        field = textRec.split(", ")
        print(field)
        print(field[0])
        print(field[1])
        textRec = textFile.readline()

当我运行程序时,它会打印列表中的第二项:字段[1] 但在那之后,它给了我一个错误

['VENNGEOR', 'Georgia', 'Venna', '12', 'Maths', '8596746234']
VENNGEOR
Georgia

这是我收到的错误:

Traceback (most recent call last):
File "h:\Digital Solutions\VS Code\Dev.py", line 22, in <module>
numRecs = populateStudentTable(textFile,"tblMentor")
File "h:\Digital Solutions\VS Code\Dev.py", line 14, in 
populateStudentTable:print(field[1])
IndexError: list index out of range

在阅读了一些评论并进行了更多的调试之后,我发现“buran”是正确的。我只是留下了一些空行,并试图在空行上运行一个循环


Tags: 函数代码field列表readline错误connectioncursor
1条回答
网友
1楼 · 发布于 2024-10-01 13:26:11

textFile中的一行不包含所需的,字符数。当您执行field = textRec.split(", ")时,如果行中少于两个,,则生成的field可能没有您所期望的3个元素

检查文件的内容,或者干脆不打印fieldprint field本身的元素。这会让你更容易理解你错在哪里

另外请注意,您是按“,”(而不是“,”)拆分的,因此请注意这样的情况也可能导致错误:

>>> foo = "a,b,c, d"
>>> foo.split(", ")
['a,b,c', 'd']

相关问题 更多 >