如何将stdout重定向到Lua中的文件?

时间:2014-11-19 04:00:46

标签: lua stdout computercraft

我试图将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。

2 个答案:

答案 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