2014-12-17 2 views
-1

Как сделать поток скриптов Python как git commit?Как установить аргумент строки

Например, если я пишу

git commit -m 'Commit message' 

Я создаю совершить с этим сообщением. И если я пишу только

git commit 

git предлагает мне ввести сообщение фиксации в текстовом редакторе, такое как VIM.

+0

возможно дубликат [Как я могу обрабатывать аргументы командной строки в Python?] (Http://stackoverflow.com/questions/567879/how-can-i-process-command-line-arguments-in-python) или http://stackoverflow.com/questions/20063/whats-the-best-way-to-grab-parse-command- строки-аргументы обойдены к-а-питон-SCRI. Также проверьте http://stackoverflow.com/questions/1009860/command-line-arguments-in-python?rq=1 – fredtantini

+0

Я не верю, что это дубликат одного из упомянутых вопросов. –

+0

Вы спрашиваете, как разбирать аргументы? Вы спрашиваете, как открыть текстовый редактор? Непонятно, что вы спрашиваете. –

ответ

1

Git и commit команды, когда не дал -m флага, называет свой preferred редактор с временным файлом, ждет редактора, чтобы выйти, а затем считывает файл.

В Python вы бы использовали os.system или более современную библиотеку subprocess. Оба будут ждать завершения подпроцесса.

import subprocess, tempfile 

tmpfile = tempfile.NamedTemporaryFile() 
subprocess.call(["vim", tmpfile.name]) 
print("You wrote", tmpfile.read()) 
tmpfile.close() 

(Конечно, этот пример предполагает, что ваш предпочтительный редактор Vim.)

+0

благодарит за ответ? Я попробую ваш метод. Итак, я обновил вопрос с помощью некоторого кода. Похоже, это так? – mikatakana

+0

ваш код возвращает «Вы написали b» в версии Python 3 – mikatakana

+0

Ваш код, похоже, делает примерно одно и то же, но у него есть некоторые проблемы. Это, вероятно, будет работать, но он не будет очищать временный файл, если он случится сбой, одновременное использование нескольких экземпляров сценария заставит их перезаписать файлы друг друга, и это не сработает, если вы У меня есть доступ на запись к текущему каталогу. –

Смежные вопросы