2017-02-08 8 views
1

subprocess.popen вызывает процесс в фоновом режиме.Запустить subprocess.popen с N аргументами

Я вызываю процесс php, а иногда и процесс python, и каждый раз аргументы могут быть разными. Я хочу написать одну функцию, и я передам список аргументов. И эта функция будет выполнять процесс, основанный на аргументах.

Итак, что я делаю, написано ниже, и на самом деле это был плохой способ, и я не хочу писать так много строк.

def RunBackGroundProcess(args): 
     # args is an array of params 
     # index 0 - command - php/python or anyother 
     # index 1 - filename - that you want to run. Specify fullpath if required 
     # index 2 - param_1 
     # index 3 - param_2 
     # index N - param_N 

     if(len(args) == 2): 
      subprocess.Popen([args[0], args[1], args[2]]) 

     if(len(args) == 3): 
      subprocess.Popen([args[0], args[1], args[2], args[3]]) 

     if(len(args) == 4): 
      subprocess.Popen([args[0], args[1], args[2], args[3], args[4]]) 

А если у меня есть 10 аргументов или 15 аргументов? Это плохо, правда? Помогите мне написать этот код в более мелких строках.

+5

'subprocess.Popen (список (арг)) '? – mgilson

+0

@mgilson обертывает его 'list' необходимым? Я предполагаю, что это уже список (хотя он говорит, что массив кажется маловероятным) – sberry

+0

@sberry - это зависит от входов и от того, насколько параноидны/гибки вы хотите, чтобы интерфейс был ... Если входы всегда необходимы, чтобы быть 'sequence', то нет, вам абсолютно не нужно обертывать его в' list'. С учетом сказанного это не очень больно, если вы пытаетесь написать что-то каркасное, и поэтому вы хотите также принять произвольные итерации (я предполагаю, что вы не передаете генераторы, которые дают достаточно элементов, чтобы быть проблематичным для 'subprocess'). .. – mgilson

ответ

1

вы передаете арг в виде списка, так что пока subprocess.Popen() нет необходимости проверять длину аргумента вы можете просто передать, как это подпроцесс

def RunBackGroundProcess(args): 
    subprocess.Popen(args) 

Это будет работать

Смежные вопросы