当我第一次运行代码时。当我第二次运行它时,在我替换它之前找不到csv文件。我不知道为什么会这样。
我还希望以最快的速度对时间进行排序。
@Query(value = "from role_page rp, page p where rp.role_id = ?1 and rp.page_id = p.page_id", nativeQuery = true)
答案 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