将用户输入传递给节日
pass user input to festival
所以我有一个 Raspberry Pi 单元,它被设置为检查 gmail 帐户,如果出现新邮件,它会通过 festival 大声朗读。
我通过粗略的 'echo "' + str(message) + '" | festival --tts'
调用与 Festival 交互,其中消息是传入电子邮件的内容。
我猜有人可能会在该消息中发送一些令人讨厌的东西并破坏计算机,我想知道是否有一种好的方法来清理消息并使该过程总体上更安全。
我可以验证电子邮件地址,但即使在经过验证的电子邮件中,我也希望进行任何检查。
有没有理由必须使用 shell 来调用节日?
如果不是,只需留在 python 内并为此使用一个库(例如 pyfestival),因为这可能更简单,而且您没有将 shell 代码注入消息的风险.
更新:因为您想通过一个单独的进程调用它,请尝试使用类似的方法(虽然尚未测试)
from subprocess import Popen, PIPE
p = Popen(['festival', '--tts'], stdin=PIPE)
p.communicate(input=message)
以上是 question 的回答的自定义版本
所以我有一个 Raspberry Pi 单元,它被设置为检查 gmail 帐户,如果出现新邮件,它会通过 festival 大声朗读。
我通过粗略的 'echo "' + str(message) + '" | festival --tts'
调用与 Festival 交互,其中消息是传入电子邮件的内容。
我猜有人可能会在该消息中发送一些令人讨厌的东西并破坏计算机,我想知道是否有一种好的方法来清理消息并使该过程总体上更安全。
我可以验证电子邮件地址,但即使在经过验证的电子邮件中,我也希望进行任何检查。
有没有理由必须使用 shell 来调用节日?
如果不是,只需留在 python 内并为此使用一个库(例如 pyfestival),因为这可能更简单,而且您没有将 shell 代码注入消息的风险.
更新:因为您想通过一个单独的进程调用它,请尝试使用类似的方法(虽然尚未测试)
from subprocess import Popen, PIPE
p = Popen(['festival', '--tts'], stdin=PIPE)
p.communicate(input=message)
以上是 question 的回答的自定义版本