Python stdout.readline() 卡住

3 投票
1 回答
1386 浏览
提问于 2025-04-18 09:45

我在我的Python脚本中使用:

cmd = ["checkcode.exe", "code=1234"]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, close)
result = proc.stdout.readline()

checkcode.exe会返回一个值,或者什么都不返回,并且会一直运行。

当checkcode.exe返回一个值时,一切都正常,但如果checkcode.exe没有返回值,脚本就会在result = proc.stdout.readline()这一行卡住。

怎么解决这个问题呢?

1 个回答

4

你需要确保子进程能够正常退出,这样才能防止readline()这个函数卡住。readline()会一直等,直到它收到一个换行符或者文件结束的信号。文件结束的信号是在程序退出时才会出现。

另外,你也可以使用非阻塞的输入输出方式,就像上面评论里提到的那样。

撰写回答