4

我正在尝试将 Lua(5.1)中的标准输出重定向到文件而不是控制台。

有一个第三方 API(我无法修改)包含一个打印出一组序列化数据的函数(我不知道打印是哪个函数,假设某种 print())

这些数据过于冗长,无法显示在我必须使用的屏幕上(无法滚动),因此我希望将函数的输出定向到文件而不是控制台。

我没有能力修补或操作 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

有谁知道强制将函数输出到文件中或强制所有标准输出到文件而不是控制台的任何方法?TIA。

4

2 回答 2

2

您需要使用io.write方法而不是print. 它以类似的方式工作,但不使用选项卡分隔参数。io.write尊重io.output,但print不尊重。

于 2014-11-19T04:28:09.577 回答
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
于 2020-03-09T22:48:08.653 回答