2009-12-06 4 views
5

this question의 대답은 문제의 핵심에 도달하지 못했습니다. CLI 기반 Python 프로그램에서 사용자가 파일을 편집 한 다음 프로그램으로 돌아갈 수있게하려고합니다. 돌아 오기 전에 수정 사항을 취소 할 수 있기를 바랍니다. Subversion의 커밋 - 노트 편집 기능처럼 느껴 져야합니다.Python CLI 프로그램에서 지능적으로 기본 편집기를 시작 하시겠습니까?

이 유형의 작업에 대한 현재 권장 사항은 무엇입니까?

+0

사용자는 플러그인 (또는 전체 프로그램!)을 편집 할 수있게 한 다음 편집 내용을 삭제하거나 "완료"하고 동시에 새 프로그램을 다시로드하도록 허용하려고합니다. 이 일종의 성취하려는 것입니까? – badp

답변

2

Subversion 등은 $ EDITOR 환경 변수를 사용하여 텍스트 파일을 편집하는 데 사용할 프로그램을 결정합니다. 물론, $ EDITOR는 쉘에서 unixy 플랫폼을 사용하는 경우에만 작동합니다. Windows (cmd /c start tempfile.txt) 또는 Mac OS X (open tempfile.txt)과 다른 것을해야합니다.

하지만 이것은 본질적으로 다른 질문에 대한 답변과 관련 답변에 대한 것입니다.

편집을 "취소"할 수있게하려면 파일의 임시 복사본을 만든 다음 편집자를 호출하십시오. 그런 다음 프로그램은 임시 파일의 내용을 실제 파일로 복사하거나 사용자가 취소하면 취소하지 않습니다. 이것은 기본적으로 Subversion이하는 일입니다.

10

소스를 통해 Python으로 작성된 Mercurial을 살펴볼 수 있습니다.

HGEDITOR, VISUALEDITOR의 값을 읽으려면 os.environ을 사용하고 기본값은 vi입니다. 그런 다음 os.system을 사용하여 tempfile.mkstemp으로 만든 임시 파일에서 편집기를 시작합니다. 편집기가 완료되면 파일을 읽습니다. 실제 콘텐츠가있는 경우 작업이 계속되고 그렇지 않으면 중단됩니다.

Mercurial의 작동 방식을 확인하려면 ui.pyutil.py입니다.

관련 문제