【问题标题】:how do I read the output of an external program while it is running in pythonpython - 在python中运行时如何读取外部程序的输出
【发布时间】:2021-12-11 22:23:18
【问题描述】:

我正在尝试制作一个控制我的世界服务器的机器人,并且我已经成功启动并向服务器发送命令,但是在运行我现在拥有的服务器时我无法获得服务器的输出只会在服务器终止后向我发送输出,类似于日志。

process = subprocess.Popen(executable,stdin=PIPE,stdout=PIPE, text=True)
out, err = process.communicate()
print(out)
print(err)

我希望能够使用该服务器信息来创建控制台

【问题讨论】:

    标签: python console subprocess stdout minecraft


    【解决方案1】:

    通过查看您的项目,我认为您的意思是获取控制台/日志? 无论如何,如果这是您的疑问。

    这就是答案

    while True:
        with open("XXXX\logs\latest.log","r") as f:
            console = f.read()
            await ctx.send(console)
    

    让我知道这是否会给您带来错误或您还有其他疑问!

    【讨论】:

    • 谢谢你的回答,我不确定这是我想要的,你能在服务器运行时阅读日志吗? @Shashankh_
    • 是的,您可以在服务器运行时读取日志
    • 非常感谢它运行得很好,我想我会保留它作为我获取输出的方法,因为我可以完全独立地运行它。然而,它并没有解决我的主要问题。当程序没有在通道中发送日志行时,程序仍然不接受输入,我认为这是因为 stdout 但这证明我错了,如果你有任何线索,我将不胜感激@Shashankh_
    • 由于 while 循环,它没有接受任何输入。我认为您将不得不使用其他东西而不是 while 循环,因为循环永远不会中断并且它不会移动到代码的下一部分。希望你能理解@PabloSAILLY
    猜你喜欢
    • 2012-03-06
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多