Использование Python для открытия среды оболочки, запуска команды и выхода из среды
Я пытаюсь автоматизировать процесс с помощью Python. Если я просто в терминале, рабочий процесс выглядит так:
user:> . /path/to/env1.sh
user:> python something.py
user:> exit
user:> . /path/to/env2.sh
user:> python something2.py
user:> exit
и т. д. еще несколько шагов. каждыйenv.sh
порождает новый скрипт с целым рядом переменных среды и тому подобным, установленным в текущем каталоге. Я почти уверен, что мне нужно использовать подпроцесс, но я не совсем уверен, как это сделать. В идеале рабочий процесс должен идти: открыть новую оболочку -> запустить несколько команд -> выйти из оболочки -> повторить при необходимости.
РЕДАКТИРОВАТЬ: Кажется, некоторые разъяснения необходимы. Я понимаю как пользоватьсяsubprocess.Popen()
а такжеsubprocess.call()
вызывать вещи внутри оболочки, из которой вызывался скрипт Python. Это не то, что мне нужно. Когда один звонитenv.sh
он устанавливает целую кучу переменных окружения и несколько других важных вещей, а затем отправляет вас в оболочку для запуска команд. Важно отметитьenv.sh
не заканчивается до тех пор, пока один из типовexit
после запуска желаемых команд. С помощьюsubprocess.call("./env.sh", shell = True)
открывает оболочку и останавливается там. Это как ввод команды./env.sh
за исключением того, что когда выдаетсяexit
Команда, остальная часть сценария Python. Так:
subprocess.call(". /path/to/env.sh", shell = True)
subprocess.call("python something.py", shell = True)
НЕ делает то, что мне нужно, и не делает:
p = subprocess.Popen(". /path/to/env.sh", shell = True)
subprocess.call("python something.py", shell = True)
p.kill()