gpt4 book ai didi

io - 在lua中实时读取控制台输出

转载 作者:行者123 更新时间:2023-12-01 02:24:34 25 4
gpt4 key购买 nike

如何在脚本运行时定期读取脚本的输出?

在 youtube-dl 的情况下,它将有关正在下载的视频的下载信息(进度/速度/eta)发送到终端。

使用以下代码,我可以将脚本输出(在 linux 上)的总结果捕获到一个临时文件中:

tmpFile = io.open("/tmp/My_Temp.tmp", "w+")
f = io.popen("youtube-dl http://www.youtube.com/watch?v=UIqwUx_0gJI", 'r')

tmpFile:write(f:read("*all"))

我不想等待脚本完成并在最后写入所有数据,而是希望能够捕获 youtube-dl 发送到终端的最新信息的“快照”。

我的总体目标是捕获下载信息,以便使用 Iup 设计进度条。

如果有更智能的方法来捕获下载信息,我也很乐意听取建议。

无论如何,如果可以以这种方式使用 io.popen()、os.execute() 或其他工具,我仍然想知道如何捕获实时控制台输出。

最佳答案

这在 Windows 和 Linux 上都可以正常工作。线路实时显示。

local pipe = io.popen'ping google.com'
for line in pipe:lines() do
print(line)
end
pipe:close()

更新:
如果以前的代码不起作用,请尝试以下操作(如双重建议):
local pipe = io.popen'youtube-dl with parameters'
repeat
local c = pipe:read(1)
if c then
-- Do something with the char received
io.write(c) io.flush()
end
until not c
pipe:close()

关于io - 在lua中实时读取控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com