2016-04-28 3 views
0

набрав команду в моем терминале Ubuntu распознает параметр t в моей команде:разница между терминалом исполнения и POPEN

/home/daniel/Downloads/SALOME-7.6.0-UB14.04/salome start -t 

В чем разница при запуске того же процесса в Python через Popen?

command ='/home/daniel/Downloads/SALOME-7.6.0-UB14.04/salome' 
commandargs= 'start -t' 

import subprocess 
subprocess.Popen([command, commandargs], shell=True).wait() 

Мой параметр обозначает режим терминала, но работает мое приложение (salome) через python Popen открывает графический интерфейс.

+0

В '/home/daniel/Downloads/SALOME-7.6.0-UB14.04/salome start -t'," start "и" -t "- два отдельных аргумента, поэтому они принадлежат как два разных элемента списка в списке args (также нет смысла использовать 'shell = True' в этом случае) –

+0

используйте ваши командные команды следующим образом:' commandargs = ['start', '-t'] ' –

ответ

0

См: https://docs.python.org/3.5/library/subprocess.html#subprocess.Popen

args should be a sequence of program arguments or else a single string. 


Смотрите также: https://stackoverflow.com/a/11309864/2776376

subprocess.Popen([command, commandargs.split(' ')], shell=True).wait() 

в качестве альтернативы вы могли бы сделать, хотя и менее рекомендуется:

subprocess.Popen(command + commandargs, shell=True).wait() 

должен сделать трюк

+0

' subprocess.Popen ((команда + '' + commandargs) .split (''), shell = True) .wait() 'будет правильным, но у меня такая же проблема – daniel

+1

вторая альтернатива работала – daniel