У меня возникли проблемы с печатью таблицы в файл с помощью lua (и я новичок в lua).Как сохранить таблицу в файле от Lua
Вот код I found here, чтобы распечатать таблицу;
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
Я понятия не имею, где команда «печать» идет, я бег этого Lua кода из другой программы. Я хотел бы сохранить таблицу в файле .txt. Вот что я пробовал;
function savetxt (t)
local file = assert(io.open("C:\temp\test.txt", "w"))
file:write(t)
file:close()
end
Затем в функции print-r я повсюду менял «отпечаток» на «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», но это не сработало. Я довольно уверен, что это ошибка на данный момент. Если после этого прокомментировать любую строку (но оставьте эту строку), она все равно не удастся, если я прокомментирую эту строку (и любые строки «файла»), тогда код запускается. Что может вызвать эту ошибку?
В качестве последующего вопроса; где файлы создаются, если я не укажу каталог (что, кажется, было сделано во всех учебниках)? – FraserOfSmeg
http://lua-users.org/wiki/SaveTableToFile – hjpotter92
'io.open (« C: \ temp \ test.txt »,« w »)' открывается не так, как вы думаете. – moteus