我试图将Lua(5.1)中的stdout重定向到文件而不是控制台。
有一个第三方API(我无法修改)包含一个打印出一系列序列化数据的函数(我不知道打印哪个函数,假设某种打印())
这个数据太冗长了,不适合我必须使用的屏幕(无法滚动)所以我希望将函数的输出定向到文件而不是控制台。
我没有能力修补或操纵Lua版本。
我的想法是使用记录不良的io.output()文件将stdout更改为文件,但这似乎根本不起作用。
io.output("foo") -- creates file "foo", should set stdout to "foo"?
print("testing. 1, 2, 3") -- should print into "foo", goes to console instead
有没有人知道强制将函数输出到文件中的任何方法,或强制所有stdout进入文件而不是控制台? TIA。
答案 0 :(得分:2)
您需要使用io.write方法而不是print
。它以类似的方式工作,但不使用制表符分隔参数。 io.write
尊重io.output
,但print
不尊重。
答案 1 :(得分:2)
-- save, might need to restore later
real_stdout = io.stdout
file = io.open ('stdout.log', 'w')
io.stdout = file
.... -- call external API
-- restore
io.stdout = real_stdout