Python只将我的字符串的第一个字传递给子进程

时间:2016-01-26 01:08:47

标签: function python-2.7 espeak

所以我每周都要学习python,如果这很明显就道歉,任何人都可以告诉我为什么我只能将我的句子的第一个单词传递给espeak,当我调用以下函数时,下面的打印命令打印出来整个东西?如果我在子进程调用中将+ x替换为我想要的文本可以正常工作,是否有一些格式化的变化我错过了以某种方式使我的变量成为字符串?

def speech(text):
    import subprocess
    x = text
    subprocess.call('espeak '+x, shell=True)
    print x

def exit():
    speech("Goodbye Slacker")

1 个答案:

答案 0 :(得分:0)

避免使用shell=True(因为它可能是security risk,而properly quoting the text可能会令人讨厌)。相反,使用shell=False并传递列表中的参数:

subprocess.call(['espeak', x], shell=False)