При преобразовании из Баш скрипт на Python вы можете пойти двумя путями:
вы взять на себя программные вызовы и просто заменить Контурные/обработки строк, например, как это:
from subprocess import check_output
for line in check_output('git branch -r', shell=True).split("\n"):
line = line.strip()
# do your replaces here, etc. leaving that for an exercise for you
# run more `check_call` or `check_output` here
вы делаете это «правильный путь» и использовать, например, a python git module. Это изначально больше работы, но долгосрочная перспектива выгодно, как вы получите больше из особенностей коробки, и имеете меньше ошибок, чем в ваших «быстро взломаны вместе SHELL вызовов»
Edit: Как комментатор справедливо предположить, вы должны стараться избегать shell=True
. В этом случае check_output(['git', 'branch', '-r'])
, безусловно, лучше, в других случаях, когда вы знаете, что скрипт python будет запущен в системах Linux и под определенной оболочкой (например, bash), тогда с shell=True
вы сможете получить доступ к переменным среды, указанным в .bashrc
, делать глобусы и т. Д. Подробное обсуждение см. В here.
Возможный дубликат [Как запустить команду bash внутри скрипта python?] (Http://stackoverflow.com/questions/26236126/how-to-run-bash-command-inside-python-script) – Priya
Это действительно возможно порождать командные строки оболочки изнутри python, но это [проблема XY] (http://xyproblem.info/). Вы не хотите этого делать. С этим кодом лучшим вопросом будет что-то вроде: «В настоящее время я запускаю в оболочке следующее: оно работает, но может быть сделано лучше. В частности, мне нужно реализовать что-то в Python, который генерирует те же результаты. моя попытка, за которой следует сообщение об ошибке, которое я получаю при запуске ». * – ghoti
Хорошим первым шагом, однако, было бы упрощение кода оболочки, который у вас есть сейчас. Например, 'git branch -r | grep "//могут быть заменены на' git branch --list -r 'tags/*' '. Подстановка команды, используемая в качестве аргумента для 'git tag', может (возможно) быть заменена просто' '$ {tag # * tags /}" '. – chepner