File io 未完成文件读取
我正在调试代码中出错的地方。我的File io 未完成文件读取,file-io,lua,File Io,Lua,我正在调试代码中出错的地方。我的file.txt包含1763行,但当我运行它时,它总是以未完成告终。始终在1680及以上的某个位置停止(由“我的代码”中的行打印);问题是每次我运行它时,它都会停在不同的行,所以我认为问题不在于我的文本文件 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(
file.txt
包含1763行,但当我运行它时,它总是以未完成告终。始终在1680及以上的某个位置停止(由“我的代码”中的行打印);问题是每次我运行它时,它都会停在不同的行,所以我认为问题不在于我的文本文件
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
我的代码中有什么错误吗?在代码中,您在脚本开始时打开了“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
--------------------------
程序终止时没有错误吗?@EgorSkriptunoff是的。无错误。在代码末尾添加此行:print('Done',row,#input)
。它每次都打印不同的数字吗?难以置信。您是否可以准备测试用例(程序+数据文件)并将其上载到某个地方,以便每个人都可以在自己的系统上复制此Lua行为?您必须使用file:close()
关闭您的文件,然后再使用读取io中的行。行(“file.txt”)do
。