我坚持使用我的python csv作业

时间:2017-04-28 16:25:16

标签: python csv

当我第一次运行代码时。当我第二次运行它时,在我替换它之前找不到csv文件。我不知道为什么会这样。

我还希望以最快的速度对时间进行排序。

@Query(value = "from role_page rp, page p where rp.role_id = ?1 and rp.page_id = p.page_id", nativeQuery = true)

1 个答案:

答案 0 :(得分:-1)

您的代码中存在许多问题,但我们只看第一个函数

def read_class_data():
    import csv
    driver=[]*6
    teams=[]*6
    input_file = open("E:\Advanced Higher Computing\Racing.csv","r")
    data = csv.reader(input_file)
    loop = 1
    for eachline in data:
        driver[loop] = eachline[0]
        team[loop] = eachline[1]
        loop = loop + 1
        inputfile.close
    return driver, teams

首先,

driver =[]*6

不会做你认为它做的事情。它创建一个空数组,即长度为零的数组。

这实际上是你得到错误的地方。在第一次循环中,loop的值为1,并且您尝试分配给driver[1] ...不存在,因为len(driver) == 0

接下来,将loop设置为1表示您认为Python列表索引是从1开始的。他们不是:Python使用从零开始的索引。

您需要append到列表中添加新数据,因此您的循环可能看起来更像

for eachline in data:
    driver.append(eachline[0])
    team.append(eachline[1])

接下来,您可以在循环中调用inputfile.close。你实际上并没有打电话,因为你没有所需的括号。它应该是inputfile.close()

但如果是的话,你的循环会在第二次传递时崩溃,因为该文件在前一次传递时已经关闭。您需要将该行移出循环。

最后,你应该使用上下文管理器(即with),这样函数最终会像

一样
def read_class_data():
    import csv
    driver = []
    teams = []

    with open("E:\Advanced Higher Computing\Racing.csv","r") as input_file:
        data = csv.reader(input_file)

        for eachline in data:
            driver.append(eachline[0])
            team.append(eachline[1])

    return driver, teams