Выполнение команд git с использованием subprocess.Popen в python - PullRequest
1 голос
/ 30 июня 2011

Я пишу небольшой скрипт на python, который должен выполнять команды git внутри данного каталога

Код выглядит следующим образом:

import subprocess, os

pr = subprocess.Popen(['/usr/bin/git', 'status'],                  
       cwd=os.path.dirname('/path/to/dir/'), 
       stdout=subprocess.PIPE, 
       stderr=subprocess.PIPE, 
       shell=True)
(out, error) = pr.communicate()
print out

Но он показывает использование git в качестве вывода.

Если команда не включает git, например. ['ls'] тогда он показывает правильный вывод.

Есть что-то, что я пропускаю?

версия Python - 2.6.6

Спасибо.

1 Ответ

7 голосов
/ 30 июня 2011

subprocess.Popen

В Unix с shell=True: [& hellip;] Если args является последовательностью, первый элемент задает строку команды, и любые дополнительные элементы будут рассматриваться как дополнительные аргументы сама оболочка .

Вы не хотите shell=True, а также список аргументов. Набор shell=False.

...