为什么在 lua 中函数 io.write() 无法正常工作

我想要计算文本中单词出现次数并给出前十个出现最多的单词及其出现次数。

我使用函数 io.open() 打开一个输入文件并作为文件句柄,然后在文件句柄上进行一些操作并将结果放入表中。然后关闭输入文件句柄,并打开一个输出文件并作为文件句柄尝试将结果写入此文件。但是它不起作用。代码如下所示。

"ioinput.txt" 是输入文件,其中包含一篇文章;"iooutput.txt" 是输出文件。

input_file = io.open("ioinput.txt", r)

--[[
这一段代码是用于计算单词数的,
它已经通过下面的 print 函数进行了验证。
--]]

input_file:close()

output_file = io.open("iooutput.txt", a)

local n = 10
for i = 1, n do
    output_file:write(words[i], "\t", counter[words[i]], "\n")
    --print(words[i], "\t", counter[words[i]], "\n")
end
output_file:flush()
output_file:close()
点赞
用户2858170
用户2858170

请参考Lua 5.4参考手册:io.open

io.open (filename [, mode])

此函数打开一个文件,模式由字符串mode指定。成功时,它将返回新的文件句柄。

模式字符串可以是以下任何一种:

"r":读模式(默认);
"w":写模式;
"a":追加模式;
"r+":更新模式,所有先前的数据都得到保留;
"w+":更新模式,所有先前的数据都被删除;
"a+":追加更新模式,先前的数据得到保留,只允许在文件末尾写入。

模式字符串还可以在末尾加上'b',在某些系统中需要以二进制模式打开文件。

请注意,可选的模式应该是一个字符串。

在你的代码中

input_file = io.open("ioinput.txt", r)output_file = io.open("ioinput.txt", a)

你使用了 ra 两种模式。两个都为nil。模式默认为“r”也就是读模式。不能在读模式下写入文件。

2021-04-29 14:22:02