在 Lua 中将多行写入文件

Writing multiple lines to a file in Lua

我尝试将多行写入 Lua 中的一个文件,但我不知道该怎么做。我试过这个:

local category = io.open("/usr/home/game/share/locale/germany/category.txt", "w")
category:write(mysql_query("USE account; SELECT DISTINCT itemshop_categories.category AS a, itemshop_categories.id AS b FROM itemshop INNER JOIN itemshop_categories ON itemshop.category_id = itemshop_categories.id ORDER BY itemshop.category_id ASC;"))
category:close()

mysql_query 给我一个 table 这样的

{
{"1_1", "1_2"},
{"2_1", "2_2"},
{"3_1", "3_2"}
}

所以我想将其写入 .txt 文件,但它不起作用。 如果我让它工作,我能像这样读取这个文件吗:

local category = io.open("/usr/home/game/share/locale/germany/category.txt", "r")
category:read()[2][1]
category:close()

获取“2_1”?

需要遍历mysql_query返回的table,手写其内容:

for k,v in ipairs(mysql_query("USE account; SELECT DISTINCT itemshop_categories.category AS a, itemshop_categories.id AS b FROM itemshop INNER JOIN itemshop_categories ON itemshop.category_id = itemshop_categories.id ORDER BY itemshop.category_id ASC;")) do
 category:write(k,"\t",v,"\n")
end

要读回它,您逐行读取文件(可能使用 io.lines),将每行拆分为两个字段,然后根据需要处理字段。

您不能直接将 table 写入文件。你必须序列化它。如果你正确地序列化它,你就可以将文件作为 lua 代码加载回来,以获得相同的 table 作为结果。

编写一个简单的 table 序列化程序并不复杂。写一个健壮的是相当困难的。幸运的是,lua-users.org wiki 上的好人已经编写了许多这样的序列化机制(质量和功能支持各不相同)。

找到一个适合您目的的。 http://lua-users.org/wiki/TableSerialization