我在使用lua打印表格到文件时遇到了困难(我是lua新手)。
这里有一些我找到的代码可以用来打印表格;
function print_r ( t )
local print_r_cache={}
local function sub_print_r(t,indent)
if (print_r_cache[tostring(t)]) then
print(indent.."*"..tostring(t))
else
print_r_cache[tostring(t)]=true
if (type(t)=="table") then
for pos,val in pairs(t) do
if (type(val)=="table") then
print(indent.."["..pos.."] => "..tostring(t).." {")
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
print(indent..string.rep(" ",string.len(pos)+6).."}")
elseif (type(val)=="string") then
print(indent.."["..pos..'] => "'..val..'"')
else
print(indent.."["..pos.."] => "..tostring(val))
end
end
else
print(indent..tostring(t))
end
end
end
if (type(t)=="table") then
print(tostring(t).." {")
sub_print_r(t," ")
print("}")
else
sub_print_r(t," ")
end
print()
end
我不知道'print'命令该放在哪里,我正在另一个程序中运行这段lua代码。 我想做的是将表保存到.txt文件中。 这是我尝试过的方法:
function savetxt ( t )
local file = assert(io.open("C:\temp\test.txt", "w"))
file:write(t)
file:close()
end
然后在print-r函数中,我把所有的“print”改成了“savetxt”。但是它没有起作用。它似乎没有以任何方式访问文本文件。有人能提供替代方法吗?
我怀疑这一行是问题所在;
local file = assert(io.open("C:\temp\test.txt", "w"))
更新: 我尝试了Diego Pino建议的编辑,但仍然没有成功。我从另一个程序(我没有源代码)运行此lua脚本,所以我不确定输出文件的默认目录可能在哪里(有没有一种方法可以通过编程获取?)。由于这是从另一个程序调用的,是否可能有些东西阻止了输出?
更新#2; 似乎问题出在这一行:
local file = assert(io.open("C:\test\test2.txt", "w"))
我尝试将其更改为“C:\ temp \ test2.text”,但没有成功。我相当有信心这是一个错误点。如果我注释掉此行之后的任何行(但保留此行),则仍然失败;如果我注释掉此行(和任何后续的'file'行),则代码运行。可能是什么导致了这个错误?
io.open("C:\temp\test.txt", "w")
打开的不是你想象的那个。 - moteus