2013-10-15 3 views
0

으로 리디렉션하는 방법은 vim이나 gedit 같은 텍스트 편집기를 파이썬 스크립트에서 열고 텍스트 편집기에서 입력 된 텍스트를 직접 파이썬 스크립트로 다시 리디렉션하여 데이터베이스에 저장할 수있는 방법입니까? 외부 텍스트 편집기를 열고 종료시 git commit 명령과 비슷한 것이 커밋 메시지를 저장하지만 파일에는 저장하지 않습니다.편집기에서 텍스트를 직접 파이썬 스크립트

+1

글쎄, 당신은 정확히 자식 수행 할 수 있습니다 특별히 정력에 관심이 있거나 당신이 그런 일을 얻을 수있는 방법을 특정보고 싶다면 은 다음을 참조 않습니다 : 임시 파일을 만들고, vim으로 편집하고, Vim이 종료하고 파일을 파싱 할 때까지 기다리십시오. – romainl

+0

나는 [임시 파일] (http://stackoverflow.com/questions/13168083/) 생성을 피하고 싶습니다. 하지만 다른 방법이 없다면 ... – johnnyq

답변

1

나는 tempfile없이 $ EDITOR 특정 동작에 너무 많이 의존하게 될 것이라고 생각합니다. tempfile 모듈은 tempdir과 tempfilename의 선택을 다루기 때문에 그렇게하지 않아도됩니다. 다음을 시도하십시오.

manedit.py : 다음

 
    import os 
    import tempfile 
    import subprocess 

    data = '6 30 210 2310 30030' 

    mefile = tempfile.NamedTemporaryFile(delete=False) 
    # delete=False otherwise delete on close() 
    mefile.write(data) 
    mefile.close() 

    subprocess.call([ os.environ.get('EDITOR','') or 'vim', mefile.name ]) 
    # unset EDITOR or EDITOR='' -> default = vim 
    # block here 

    mefile = open(mefile.name, 'r') 
    newdata = mefile.read() 
    mefile.close() 
    os.remove(mefile.name) 

    print(newdata) 

그리고 각 시나리오를 확인하려면 다음 명령을보십시오. 을 $ EDITOR과 다른 편집기로 에드 교체

 
    python manedit.py 

    env EDITOR= python manedit.py 

    env EDITOR=ed python manedit.py 

    env -u EDITOR python manedit.py 

함정 : 스크립트 블록 전용 편집기가 실행된다. 편집기는 기존 편집기 세션에서 새 창을 열어 반환 할 수 있으며 수동 편집 세션이 완료되었음을 알립니다. 그러나 나는 그런 편집기를 모른다.

편집 :
http://vimdoc.sourceforge.net/htmldoc/remote.html
http://petro.tanrei.ca/2010/8/working-with-vim-and-ipython.html
http://www.freehackers.org/VimIntegration

+0

추가 정보를 주셔서 감사합니다. – johnnyq

관련 문제