pyttsx3 延迟上一行的打印语句

问题描述 投票:0回答:1

在设置了

pyttsx3.speak()
参数的打印语句之后使用
end=''
时,我注意到一个奇怪的错误。看看我的代码。

我做了一些研究,但找不到与此问题相关的任何内容。我找不到发生这种情况的原因。我首先想到的是,默认的

print()
函数行为可能不会打印该语句,除非有新行。就像除非有新行否则不会打印标准输出一样。

import pyttsx3

print("This should be before speaking, ", end='')
pyttsx3.speak("Hi")
print("and this should be after speaking")

正常的逻辑是,它将打印第一个语句,说出

hi
,然后打印第二个语句。但是,在
pyttsx3.speak()
完成之前它不会打印任何内容。仅当我在打印语句中指定
end=''
时才会发生这种情况。如果我删除它,逻辑就完全没问题。

python printing output newline pyttsx3
1个回答
0
投票

问题不在于 pyttsx3,但它是
print()

中的一个功能

好吧,看来即使使用

time.sleep()
函数也会发生同样的问题,这意味着
pyttsx3
不是问题所在。我查看了
print()
函数 here 的文档,并在第一条语句中指定了
flush=True
,它工作得很好。

根据我的理解,当 print 语句中没有换行符时,输出仍将位于缓冲区中,直到出现新行为止。因此从技术上讲,打印语句被执行,但输出仍然在缓冲区中并且对您不可见。当您执行

flush=True
时,您会强制输出进入标准输出,而不是留在缓冲区中。我不知道为什么 Python 文档中没有特别提到这一点。

感谢您阅读本文。在官方 Python 存储库的 Github 上创建问题是否正常?建议将此详细信息添加到文档中。

© www.soinside.com 2019 - 2024. All rights reserved.