有沒有辦法像Python腳本一樣打開文本編輯器如vim或gedit,然後將文本編輯器中的輸入文本直接重定向回python腳本,以便將其保存到數據庫中? 類似git commit命令,它打開外部文本編輯器並退出時保存提交消息但不保存到文件中。將文本從編輯器直接重定向到python腳本
0
A
回答
1
我認爲你最終會過度依賴$ 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
的缺陷:只在編輯器中運行 的腳本塊。編輯可能會在現有編輯器會話中打開一個新窗口並返回,表示手動編輯會話已完成。但是我不知道這樣的編輯。
編輯: 如果你是專門在vim感興趣,或者您希望看到這樣的事情是如何具體得到,看到以下內容:
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
相關問題
- 1. Perl:將多行文本重定向到編輯器並將編輯後的文本返回到變量
- 2. 直接從命令行編輯文本
- 3. 腳本編輯器/文件
- 4. 如何將python腳本cmd輸出重定向到文件?
- 5. 用Python編輯Python腳本
- 6. 將輸出從shell腳本重定向到文件
- 7. 如何將命令的輸出重定向到圖形文本編輯器
- 8. 重定向文本通常接受文件的腳本重定向
- 9. 重定向直接訪問子文件夾中的文件到腳本
- 10. Shell腳本 - 手動編輯文件後重定向到文件不起作用
- 11. 富文本編輯器選項卡直接到textarea
- 12. 從python腳本執行diff.py並將輸出重定向到一個文件
- 13. Python文本編輯器(非常基本)
- 14. bash重複python腳本,直到成功
- 15. Bash腳本 - 將子腳本stderr重定向到父級的stdout
- 16. 從文本編輯器捕獲文本
- 17. 用Python腳本編輯XML文件
- 18. 如何將Python腳本的輸出重定向到終端
- 19. 將stdin和stdout重定向到shell腳本的Python代碼
- 20. 將bash輸出重定向到python腳本
- 21. 將gunzip輸出重定向到python腳本
- 22. 如何將stdin從shell腳本重定向到shell腳本中的命令?
- 23. 重定向Python腳本的輸出到文件的開頭
- 24. 直接在服務器上工作的文本編輯器? (aptana?)
- 25. 跟隨python硒phantomjs腳本重定向
- 26. 重定向在infinetely運行python腳本
- 27. Ruby腳本編輯RichText編輯器
- 28. 如何編寫PHP重定向腳本
- 29. Python Tkinter文本編輯器不會將字體保存到文本文件
- 30. 使用腳本編輯器
那麼,你可以做什麼混帳確實:創建一個臨時文件,用vim編輯它,等待Vim退出並解析文件。 – romainl
我想避免創建[臨時文件](http://stackoverflow.com/questions/13168083/)。但如果沒有其他方式,然後... – johnnyq