未完成的文件读取

我正在尝试调试我的代码出了什么问题。我的 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

我的代码有问题吗?

点赞
用户234175
用户234175

看起来在你的代码中,你在脚本开头打开了一个叫做 "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
--------------------------
2013-07-24 08:45:58