2015-12-31 2 views
0

У меня есть несколько выполнения команды в питоне на Windows, используя subprocess.call(), но для каждого из них я должен выполнить пакетный файл установка Environmet перед вызовом соответствующей команды, он выглядит следующим образомPython создать оболочку для нескольких процессов

subprocess.call(precommand + command) 

Есть ли способ «создать» оболочку в python, который будет иметь командный файл, выполненный только один раз и в этой команде оболочки будет выполняться несколько раз?

ответ

1
  1. Запись команды в BAT-файл (tempfile.NamedTemporaryFile())
  2. Запуск BAT-файл (subprocess.check_call(bat_file.name))

(не проверено):

#!/usr/bin/env python 
from __future__ import print_function 
import os 
import subprocess 
import tempfile 

with tempfile.NamedTemporaryFile('w', suffix='.bat', delete=False) as bat_file: 
    print(precommand, file=bat_file) 
    print(command, file=bat_file) 
rc = subprocess.call(bat_file.name) 
os.remove(bat_file.name) 
if rc != 0: 
    raise subprocess.CalledProcessError(rc, bat_file.name) 
0

Нужно ли получать выходные данные из каждой команды отдельно? Если нет - вы можете передать эти команды, используя & &, || или ;

cd dir && cp test1 test2 && cd - 
+0

И здесь что эти команды довольно длинные, поэтому только 10% из них могут быть выполнены из-за слишком длинной команды – miqelm

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