Фактическая проблема , вероятно в том, как вы вызываете сценарий, но мы не можем определить, не увидев сценарий.
Между тем, это, безусловно, ошибка:
subprocess.call(['bash train.sh'],shell=True)
Требуется либо
subprocess.call(['bash', 'train.sh']) # shell=False
, либо
subprocess.call('bash train.sh',shell=True)
Невозможно объединить список с shell=True
, поскольку оболочка ожидает строку, а несписок, как последовательность команд для запуска.
Если ваш скрипт исполняемый и имеет действительный shebang, вы на самом деле хотите
subprocess.call(['train.sh'])
Bash не может установить переменную Python result
без взаимодействия с вызывающей программой Python.
Если ваш сценарий пытается прочитать из стандартного ввода, возможно, попробуйте
subprocess.call(['train.sh'], stdin=subprocess.DEVNULL)
Если ваш сценарий пытается записать что-то в стандартный вывод, возможно, попробуйте
output = subprocess.check_output(['train.sh'])
Это все только умозрительные;Ваш вопрос, вероятно, должен быть закрыт как неясный, но, по крайней мере, это должно дать вам нечто большее, чтобы обновить ваш вопрос и / или ваш код.