2012-02-25 3 views
1

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

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

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

+0

Что такое 'args' здесь? В Py3 'print' - это функция, а не инструкция. –

+0

Кодовый блок копируется/вставлен, потому что я не могу найти способ делать то, что мне нужно, поэтому вопрос. –

+0

Возможный дубликат [В Python, как я использую подпроцесс вместо os.system?] (Http://stackoverflow.com/questions/421206/in-python-how-i-do-use-subprocess-instead-of -os-system) –

ответ

2

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

+0

Есть ли эквивалент для os.startfile()? –

+1

№ 'os.startfile()' - это оболочка, специфичная для Windows, вокруг оболочки ShellExecute(). –

1
In [4]: os.system('uname -a') 
Linux diego-workstation 3.0.0-16-generiC#28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 
Out[4]: 0 

In [8]: subprocess.call(['uname', '-a']) 
Linux diego-workstation 3.0.0-16-generiC#28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 
Out[8]: 0 
0

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

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