无法使用lua中的popen从python读取标准输出
我正在尝试阅读一个简单python脚本的标准输出无法使用lua中的popen从python读取标准输出,python,lua,stdout,popen,Python,Lua,Stdout,Popen,我正在尝试阅读一个简单python脚本的标准输出 import time while True: print("test") time.sleep(1) 使用下面的lua代码 local p = assert(io.popen("/usr/bin/python test.py", "r")) if not p then print("error") end print("process: "..to
import time
while True:
print("test")
time.sleep(1)
使用下面的lua代码
local p = assert(io.popen("/usr/bin/python test.py", "r"))
if not p then
print("error")
end
print("process: "..tostring(p))
while p do
local line = p:read("*l")
if line then
print("line: "..tostring(line))
end
end
这将打印流程文件标识符,但不输出
将yes
替换为命令表明lua代码本身应该可以工作。但是,任何调用python脚本的方法(包括shebang)都不会产生任何输出。更改为sys.stdout.write(“test”+“\n”)
也没有什么区别
我在运行archlinux和debian的两台机器上进行了尝试。第一个是运行python 3.7.2和lua 5.3.5。能否删除
python
脚本中的while循环并重试?好的,这确实会生成一次输出。它也可以在for循环中工作。这是否意味着python会缓冲打印直到while循环终止?请尝试,sys.stdout.write(“test”+“\n”);sys.stdout.flush()
:)很酷,谢谢!几天来,我一直在苦苦思索,问题出在love2d或lua身上。我还发现这显示了其他一些方式。