我正在尝试将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。
您需要使用io.write方法而不是print
。它以类似的方式工作,但不会用制表符分隔参数。 io.write
尊重io.output
,但不尊重print
。
-- 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