2016-01-26 5 views
0

Так что я неделя на изучение python, извинения, если это очевидно, может кто-нибудь сказать мне, почему я только получил первое слово моего предложения, переданное espeak, когда я звоню следующие функции, но команда печати под ней печатает все это? если я заменил + x в вызове подпроцесса с текстом, я хочу, чтобы он работал нормально, есть ли какие-то изменения в форматировании, которые я теряю, как-то делая мою переменную строкой?Python только передает первое слово моей строки подпроцессу

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

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

ответ

0

Избегайте использования shell=True (так как это может быть security risk и properly quoting the text может быть неприятностью). Вместо этого используйте shell=False и передайте аргументы в списке:

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

Фантастично, большое спасибо – Dan