如何将标准输出重定向到Lua中的文件?

问题描述 投票:4回答:2

我正在尝试将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。

lua stdout computercraft
2个回答
2
投票

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


0
投票
-- 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
© www.soinside.com 2019 - 2024. All rights reserved.