如何在循环中写入时在文件名中添加数字?

时间:2016-05-26 14:03:59

标签: loops lua

加速度记录在result.txt中,但我想在结果中只记录1个结果。

我想将结果记录在result_1.txt中,然后是result_2.txt,result_3.txt

如何在1个txt文件中记录1个结果?

这是我的代码。

local filename = "result.txt"

local file = io.open(filename, "a")

for i=1, 1000 do

    sim:stepForward()
    local p = ship.rb:getAcceleration():z()
    file:write(string.format("%d\n",p))

end

file:close()

2 个答案:

答案 0 :(得分:2)

您需要为要输出的每个文件使用不同的文件处理程序。

为简单起见,假设文件名以result_1.txt开头:

for i = 1, 1000 do
  local filename = "result_" + tostring(i) + ".txt"
  local file = io.open(filename, "a")
  -- write to file
  file:close()
end

答案 1 :(得分:0)

要将每个文件保存到其他文件,您需要单独打开和关闭每个文件。可以编写一个函数来为您执行此操作。

saveData = function ( data, path )
    local f = io.open(path, 'a')
    f:write(data)
    f:close()
end

然后你可以打电话

saveData(string.format("%d\n",p), 'results_1.txt')

现在要按升序排列它们,我们只需使用循环并将数字与字符串连接起来。

for i = 1, 10, 1 do
     local path = 'results_'..i..'.txt'
     saveData(<insert data here>, path)
end

或者,我们可以将所有数据保存在表格中。

data = { <insert data here>, ... }

然后将表格中的所有数据保存到各自的文件中。

for i, v in ipairs(data) do
     local path = 'results_'..i..'.txt'
     saveData(v, path)
end