例如,如果一個python腳本會吐出一個字符串,給出一個新編寫的文件的路徑,我將在運行該腳本後立即編輯這個文件,將它直接發送到系統剪貼板會非常好比STDOUT
。有沒有辦法直接發送python輸出到剪貼板?
回答
您可以使用外部程序,xsel
:
from subprocess import Popen, PIPE
p = Popen(['xsel','-pi'], stdin=PIPE)
p.communicate(input='Hello, World')
隨着xsel
,你可以設置你想要的工作剪貼板上。
-p
適用於PRIMARY
選擇。這是中間點擊一個。-s
適用於SECONDARY
選擇。我不知道這是否被使用了。-b
適用於CLIPBOARD
選擇。那是你的Ctrl + V
之一。
一個快速和骯髒的功能,我創建的處理這個問題:
def paste(str, p=True, c=True):
from subprocess import Popen, PIPE
if p:
p = Popen(['xsel', '-pi'], stdin=PIPE)
p.communicate(input=str)
if c:
p = Popen(['xsel', '-bi'], stdin=PIPE)
p.communicate(input=str)
paste('Hello', False) # pastes to CLIPBOARD only
paste('Hello', c=False) # pastes to PRIMARY only
paste('Hello') # pastes to both
您也可以嘗試的PyGTK的clipboard
:
import pygtk
pygtk.require('2.0')
import gtk
clipboard = gtk.clipboard_get()
clipboard.set_text('Hello, World')
clipboard.store()
這工作與Ctrl + V
選擇我。
我測試了這個片段,但它似乎不適用於我的設置。做完'python abovescript.py'後,我在終端中點擊我的鼠標,但是沒有'Hello,World'出現。 – nye17
@ nye17你在嘗試哪種方法?它會給你什麼錯誤? – NullUserException
第一個「剪貼板」一個,不起作用,但根本沒有錯誤報告。 – nye17
這不是一個真正的Python問題,而是一個shell問題。通過將Python腳本的輸出傳送到xclip
命令中,您可以將Python腳本(或任何命令)的輸出發送到剪貼板而不是標準輸出。
myscript.py | xclip
如果xclip
尚未安裝在系統上(它不是默認情況下),你這是怎麼得到它:
sudo apt-get install xclip
如果你想直接從您的Python腳本做我想你可以掏腰包並使用os.system()
運行xclip命令,這很簡單但不推薦使用。有許多方法可以做到這一點(請參閱subprocess
模塊,瞭解當前的官方方式)。你要執行的命令是這樣的:
echo -n /path/goes/here | xclip
獎勵:在Mac OS X中,可以通過管道進入pbcopy
做同樣的事情。
我更喜歡將腳本指定的字符串發送到剪貼板,而不是將所有輸出傳送到'xclip',因爲最終輸出和所需字符串不一定相同。但是你是對的,我可以使用'subprocess'將它發送到'xclip',儘管我寧願稍微不那麼「蠻力」的方式。 – nye17
在python中這樣做更好 - 允許代碼輸出的不僅僅是文件名... – tobyodavies
添加一個命令行標誌來抑制除了路徑名之外的所有內容,或者可選地將其發送到標準錯誤(所以你可以將它連接到'xclip'而不會引起其他問題)。無論如何,你都需要一個命令行標誌,因爲你不想在沒有被明確告知的情況下摧毀用戶的剪貼板,爲什麼不讓它更加unixy? – kindall
正如其他人指出,這不是「Python和電池」,因爲它涉及到GUI操作。所以它是平臺依賴的。如果你在windows上,你可以使用win32 Python模塊和Access win32剪貼板操作。 我的建議是挑選一個GUI工具包(用於QT的PyQT/PySide,用於GTK +的PyGTK或用於wxWidgets的wxPython)。然後使用剪貼板操作。如果你不需要工具包的重量級的東西,那麼你的包裝將在Windows上使用win32包裝,並在其他平臺上提供,並相應切換!
對於wxPython的下面是一些有用的鏈接:
http://www.wxpython.org/docs/api/wx.Clipboard-class.html
http://wiki.wxpython.org/ClipBoard
http://www.python-forum.org/pythonforum/viewtopic.php?f=1&t=25549
- 1. 有沒有辦法將多個命令輸出複製到剪貼板?
- 2. 有沒有辦法捕捉剪貼板粘貼事件w jQuery?
- 3. 有沒有辦法將數據添加到剪貼板?
- 4. 有沒有辦法從android的剪貼板複製到終端?
- 5. 有沒有辦法在Monogame中使用剪貼板?
- 6. 有沒有辦法在java中獲得WordprocessingML剪貼板內容?
- 7. Powershell輸出到剪貼板沒有拖尾換行符?
- 8. Quickbase - 有沒有辦法將結果從一個字段複製到剪貼板?
- 9. 有沒有辦法將HighCharts工具提示的內容複製到剪貼板?
- 10. 複製到沒有System.Windows.Forms.Clipboard的剪貼板?
- 11. 複製到剪貼板沒有Flash
- 12. C#剪貼板直接複製粘貼
- 13. 有沒有辦法從.fsx文件直接發送HTML到FsLab日誌中?
- 14. 將CMD輸出複製到剪貼板
- 15. shell腳本輸出到剪貼板
- 16. 寫八度/ matlab輸出到剪貼板
- 17. WinDbg的命令輸出到剪貼板
- 18. 有沒有辦法讓Excel VBA發送數據到套接字?
- 19. 有沒有辦法將廚師退出代碼發送到shell
- 20. vscode:有沒有辦法將密鑰發送到任務輸出控制檯
- 21. 爲什麼我不能直接從CImage發送HBIMAP到剪貼板?
- 22. 有沒有辦法在Chrome開發工具中將響應主體複製到剪貼板?
- 23. 在Python中發送字符串隊列到剪貼板
- 24. 有沒有辦法找出數據已經從其中複製到剪貼板的源應用程序-Windows Forms
- 25. 有沒有辦法從appengine直接連接到postgres?
- 26. VBA Excel 2010中 - 直接從剪貼板
- 27. 有沒有辦法直接在Python中訪問硬件?
- 28. 剪貼板查看器沒有得到粘貼通知
- 29. 有沒有辦法啓動發送直接消息的Twitter對話框?
- 30. 有沒有辦法將數據發送到推送器channel_auth_endpoint?
該解決方案將取決於操作系統,是否沒問題? – NullUserException
@NullUserExceptionఠ_ఠ我假設它會,但我完全在Linux內部工作,所以我想要一個針對Linux的解決方案。 – nye17