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

cwb*_*bit 5 lua stdout computercraft

我试图将 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
Run Code Online (Sandbox Code Playgroud)

有谁知道有什么方法可以强制函数输出到文件中,或者强制所有标准输出到文件而不是控制台中?TIA。

Pau*_*nko 3

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

  • 这是一个不同的问题;)。如果 API 函数仍然使用全局 `print` 函数(而不是其 C API 等效函数),您可以用自己的 `print` 替换: `print = function(...) io.write(table.concat({.. .}, "\t") end`。如果使用 C API,我认为没有办法重定向或猴子补丁。有关详细信息,请参阅此线程:http://lua-users.org/lists/ lua-l/2012-11/msg00125.html (4认同)