如何在循环中写入带有数字的文件名?

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

我想在 result_1.txt、result_2.txt、result_3.txt 中记录下一个结果。

如何在一个 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()
点赞
用户1009479
用户1009479

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

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

for i = 1, 1000 do
  local filename = "result_" + tostring(i) + ".txt"
  local file = io.open(filename, "a")
  -- 写入文件
  file:close()
end
2016-05-26 14:49:34
用户6336645
用户6336645

要将它们保存到不同的文件中,您需要逐个打开和关闭每个文件。可以编写一个函数来为您执行此操作。

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
2016-05-28 03:29:19