为什么从python3子进程读取实时输出需要按enter键才能输出数据?

2024-05-12 15:29:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在阅读有关python3中子进程的实时处理的可用问题,尽管没有一个能解决我所遇到的确切问题。我正在编写一个脚本来解析相关数据,并为臭名昭著的一天格式化源服务器的输出。你知道吗

当脚本启动时,它将启动臭名昭著的服务器(/多伊什)它提供服务器启动变量,如地图、播放列表、战眼服务器数据等。在某个特定点,服务器脚本正在挂起,等待连接或杀死等事件发生。此时服务器会将其记录到STDOUT,但是我的Python程序会停止输出任何数据,除非您按“enter”键。按“回车”键后,将打印最新的事件数据。你知道吗

是什么导致需要按enter键以获得更多输出?会不会是什么时候多伊什服务器脚本正在等待事件?你知道吗

我当前运行和读取子流程的代码是:

cmd = './doi.sh' data = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, bufsize=1)

如果为真: 输出=数据.stdout.readline() 如果输出=='',并且数据.poll()不是无: 打破 如果输出: 输出=输出.解码('utf-8') 打印(输出) 你知道吗

我构建了一些函数来解析解码字符串中的信息,这些函数在子进程输出的行上工作,但是必须按enter来更新控制台日志会破坏整个程序的功能。你知道吗


Tags: 数据函数程序服务器脚本cmd进程stdout