我想調用python腳本中的編輯器來請求用戶輸入,就像crontab e
或git commit
一樣。從python腳本中調用EDITOR(vim)
這是我迄今爲止運行的一個片段。 (在將來,我可能會使用$ EDITOR,而不是VIM,使人們可以定製自己喜歡。)
tmp_file = '/tmp/up.'+''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(6))
edit_call = [ "vim",tmp_file]
edit = subprocess.Popen(edit_call,stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
我的問題是,通過使用POPEN,似乎讓我的I/O與python腳本從進入vim的正在運行的副本,我無法找到一種方法來通過I/O通過vim。我收到以下錯誤。
Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
什麼是從python調用CLI程序,手動控制它,然後在完成後將其傳回的最佳方式?
太棒了!我的一個修改是在未設置EDITOR的情況下添加回退:編輯器= os.environ.get('編輯器')如果os.environ.get('編輯器')其他'vim'。如果您希望接受它,我已將此作爲編輯提交給您。 – sam 2011-06-10 19:25:40
感謝@sam和@unutbu的建議。我不知道你可以用一個未設置的'$ EDITOR'逃脫:) – progo 2011-06-10 20:40:11
+1,即使由於某種原因,EDITOR沒有在我的Ubuntu上設置。奇怪的(r)'$ editor'啓動納米,其中'crontab -e'啓動vim ... – FMCorz 2014-04-09 12:34:34