Python 3: Использование подпроцесса вместо os.system - PullRequest
1 голос
/ 25 февраля 2012

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

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

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

Ответы [ 3 ]

2 голосов
/ 25 февраля 2012

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

1 голос
/ 25 февраля 2012
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 голосов
/ 26 февраля 2012

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

...