我正在尝试调试代码中出错的地方。我的file.txt
包含1763行,但是当我运行它时,它总是没有完成。始终在1680及以上的地方停留(由我的代码中的row
打印);事情是它每次运行都停在不同的行,所以我不认为问题与我的文本文件有关。
row = 0
for line in io.lines("file.txt") do
row = row+1
local new_row1 = {}
for n in line:gmatch'%S+' do
table.insert(new_row1, tonumber(n))
end
if #new_row1 > 0 then
table.insert(input, new_row1)
end
print(row)
end
我的代码中有什么问题吗?
答案 0 :(得分:2)
在您的代码中,您在脚本开头打开了“file.txt”的文件句柄,仍然打开,直到您关闭文件的末尾。在此期间,您尝试在循环中重新打开“file.txt”,这会导致您看到的奇怪行为。
当我在第一个循环之后但在最后一个外循环之前将文件打开并关闭到中间部分时,这解决了问题:
file = assert(io.open("file.txt", "w"))
for i = 1, 1000 do
j = math.random(i, row-one)
u[i], u[j] = u[j], u[i]
for k = 1, 11 do
file:write(input2[u[i]][k], " ")
end
file:write"\n"
end
num = (row-one)+1
for i = 1, one do
for k=1, 11 do
file:write(input2[num][k], " ") --writes to the file all the rows starting from where '1' in column11 was seen
end
file:write("\n")
num = num + 1
end
file:close()
-----------------------------------Access file.txt.--------------------------
-- ...
这给出了预期的输出:
Done 1762 1762
--------------------------