Я пишу небольшой скрипт 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
Благодарю.
В Unix с
shell=True
: [...] Если args - это последовательность, первый элемент указывает командную строку, и любые дополнительные элементы будут рассматриваться как дополнительные аргументы самой оболочки.
Вы не хотите, чтобы shell=True
а также список аргументов. Установите shell=False
.
def bash_command (cmd):
s = subprocess.Popen(['/usr/bin/git', "status"], shell = False, stdin = subprocess.PIPE, stdout = subprocess.PIPE, stderr = subprocess.PIPE, cwd = "G:\x ").communicate() print s
Могу ли я сделать это на окнах
это не работает
shell=True
. в противном случае возникаетOSError: [Errno 2] No such file or directory