Интеллектуальный запуск редактора по умолчанию из программы Python CLI? - PullRequest
5 голосов
/ 07 декабря 2009

Ответы в на этот вопрос не дошли до сути проблемы. В Python-программе на основе CLI я хочу, чтобы пользователь мог редактировать файл и затем возвращаться в программу. Прежде чем вернуться, я хочу, чтобы они могли отменить свои правки. Это должно быть похоже на функцию редактирования примечаний в Subversion.

Каковы текущие рекомендации для этого типа задач?

Ответы [ 2 ]

10 голосов
/ 07 декабря 2009

Вы можете попробовать просмотреть источники в Mercurial, который написан на Python.

Они используют os.environ для чтения значений переменных окружения HGEDITOR, VISUAL и EDITOR, по умолчанию vi. Затем они используют os.system для запуска редактора временного файла, созданного с помощью tempfile.mkstemp. Когда редактор готов, они читают файл. Если в нем есть какое-то реальное содержимое, операция продолжается, в противном случае она прерывается.

Если вы хотите посмотреть, как это делает Mercurial, подробности приведены в ui.py и util.py .

2 голосов
/ 07 декабря 2009

Subversion и др. Используют переменную среды $ EDITOR, чтобы определить, какую программу использовать для редактирования текстовых файлов. Конечно, $ EDITOR будет работать, только если вы работаете на платформе Unixy в оболочке. Вам придется сделать что-то другое для Windows (cmd /c start tempfile.txt) или Mac OS X (open tempfile.txt).

Но это, по сути, то, что сказали ответы и связанные ответы на ваш другой вопрос.

Если вы просто хотите иметь возможность «отменить» изменения, сделайте временную копию файла и вызовите ваш редактор для этого. Ваша программа может затем скопировать содержимое временного файла в реальный файл или, если пользователь отменяет, нет. Это в основном, как это делает Subversion.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...