Сценарии оболочки на Python: вызов программ, использующих проклятия и т. Д

#python #shell #scripting #subprocess #stdout

#python #оболочка #сценарии #подпроцесс #стандартный вывод

Вопрос:

Вот очень конкретный вопрос, но я ищу немного более общее решение:

Я пишу сценарий оболочки на Python для помощи в различных задачах конфигурации, включая выполнение git clone различных репозиториев. Когда я звоню git clone , есть ли у меня хороший способ передать вывод git display непосредственно на терминал (индикаторы выполнения и т. Д.)?

Просто передача стандартного вывода подпроцесса в sys.stdout не сокращает его, git потому что поведение предполагает перезапись той же части терминала, чтобы указать прогресс. Так что это недостаточно хорошо:

 import sys, subprocess
process = subprocess.Popen("git clone --recursive https://github.com/my/repo.git",
                           shell=True,
                           stdout=sys.stdout,
                           stderr=subprocess.PIPE)
  

Я не ищу ответа «использовать git-python» — скорее, я ищу более общую технику, которую я могу применить к этой и другим задачам конфигурации.

Спасибо!

Ответ №1:

Попробуйте:

 import os
os.system(mycommand)
  

Это работает для wget , индикатор выполнения, который перезаписывает себя в одной строке на экране, работает правильно таким образом. Я полагаю, это сработало git бы и для других.