Python 3: использование подпроцесса вместо os.system

У меня есть строка с именем variable, и мне нужно сделать subprocess эквивалент os.system. Я пытался найти способ сделать это, но нашел только:

variable2 = subprocess.Popen(args, stdout=subprocess.PIPE)
print variable2.communicate()[0]

Однако у меня возникли проблемы с пониманием того, как его использовать. Как мне достичь своей цели?


person Eden Crow    schedule 25.02.2012    source источник
comment
Какие args здесь? В Py3 print — это функция, а не инструкция.   -  person Zaur Nasibov    schedule 25.02.2012
comment
Блок кода копируется/вставляется, потому что я не могу найти способ сделать то, что мне нужно, отсюда и вопрос.   -  person Eden Crow    schedule 25.02.2012
comment
Возможный дубликат В Python, как я использую подпроцесс вместо os.system?   -  person Tom Myddeltyn    schedule 07.02.2017


Ответы (2)


Документация предоставляет эквиваленты для нескольких функций создания подпроцессов в старом стиле. os.system() объясняется здесь.

person Marcelo Cantos    schedule 25.02.2012
comment
Есть ли эквивалент для os.startfile()? - person Eden Crow; 25.02.2012
comment
os.startfile() — это специфичная для Windows оболочка вокруг файла ShellExecute(). - person Marcelo Cantos; 25.02.2012

Посмотрите на функции subprocess.call, subprocess.check_call и subprocess.check_output. Вам может понадобиться передать shell=True, если вы выполняете команду оболочки (которая будет передана os.system), а не явно указывать исполняемый файл и последовательность аргументов.

person gps    schedule 26.02.2012