如何從python的(windows)剪貼板中讀取文本?如何從python的(windows)剪貼板中讀取文本?
回答
您可以使用名爲win32clipboard的模塊,這是pywin32一部分。
下面是首先將剪貼板數據然後得到它的一個示例:
import win32clipboard
# set clipboard data
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText('testing 123')
win32clipboard.CloseClipboard()
# get clipboard data
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
print data
從文檔的重要提示:
當窗口已完成檢查或改變剪貼板, 通過調用CloseClipboard關閉剪貼板。這使其他 窗口可以訪問剪貼板。調用CloseClipboard之後,請勿在 剪貼板上放置對象。
你知道有沒有辦法使用'with'語句? – Norfeldt 2013-07-11 14:21:08
值得注意的是,在py34中,win7,SetClipboardText在沒有先前調用EmptyClipboard的情況下不起作用 – CoderTao 2015-01-12 21:57:49
如果您想要執行更復雜的操作從剪貼板中獲取HTML格式的內容。請參閱http://stackoverflow.com/questions/17298897/how-can-i-copy-from-an-html-file-to-the-clipboard-in-python-in-formatted-text – 2016-09-08 08:23:07
從win32all軟件包嘗試win32clipboard(如果您使用的是ActiveState Python,可能會安裝它)。
我見過很多建議使用Win32模塊,但Tkinter的提供我見過的最短和最簡單的方法,在這個帖子:How do I copy a string to the clipboard on Windows using Python?
另外,Tkinter的是Python標準庫。
上面最上面的答案是奇怪的,它只是簡單地清除剪貼板,然後獲取內容(然後是空的)。可以清除剪貼板以確保某些剪貼板內容類型(如「格式化文本」)不會「覆蓋」要保存在剪貼板中的純文本內容。
下面這段代碼替換所有換行符用空格剪貼板,然後刪除所有雙空格,最後保存的內容背到剪貼板:
import win32clipboard
win32clipboard.OpenClipboard()
c = win32clipboard.GetClipboardData()
win32clipboard.EmptyClipboard()
c = c.replace('\n', ' ')
c = c.replace('\r', ' ')
while c.find(' ') != -1:
c = c.replace(' ', ' ')
win32clipboard.SetClipboardText(c)
win32clipboard.CloseClipboard()
如果你不想安裝額外的軟件包,也可以完成工作。
import ctypes
CF_TEXT = 1
kernel32 = ctypes.windll.kernel32
user32 = ctypes.windll.user32
user32.OpenClipboard(0)
if user32.IsClipboardFormatAvailable(CF_TEXT):
data = user32.GetClipboardData(CF_TEXT)
data_locked = kernel32.GlobalLock(data)
text = ctypes.c_char_p(data_locked)
print(text.value)
kernel32.GlobalUnlock(data_locked)
else:
print('no text in clipboard')
user32.CloseClipboard()
你可以很容易地通過內置模塊Tkinter完成這基本上是一個GUI庫。此代碼創建一個空白小部件以從OS獲取剪貼板內容。
#from tkinter import Tk # Python 3
from Tkinter import Tk
Tk().clipboard_get()
對於我控制檯程序以上Tkinter的答案也不太爲我工作,因爲.destroy()總是給一個錯誤,:
不能援引「事件」命令:應用程序在執行時被破壞...
或者當使用.withdraw()時,控制檯窗口沒有得到焦點。
要解決這個問題,您還必須在.destroy()之前調用.update()。例如:
# Python 3
import tkinter
r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()
的r.withdraw()防止從幀示出用於milisecond,然後它會被破壞給予焦點返回到控制檯。
使用蟒蛇庫Clipboard
它只是用這樣的:
import clipboard
clipboard.copy("this text is now in the clipboard")
print clipboard.paste()
我發現,這是擺脫蟒蛇訪問剪貼板最簡單的方法:
1)安裝pyperclip : pip install pyperclip
2)用法:
import pyperclip
s = pyperclip.paste()
pyperclip.copy(s)
# the type of s is string
測試Win10 64位,Python 3.5。似乎也適用於非ASCII字符。 經測試的字符包括±°©©αβγθΔΨΦååöö
- 1. 從剪貼板中讀取文本
- 2. VBA:從剪貼板中讀取文件
- 3. 如何從剪貼板粘貼文本?
- 4. 如何從Windows剪貼板中讀取位圖
- 5. 如何從python的windows剪貼板中讀取jpg或png,反之亦然?
- 6. 如何從python剪貼板中獲取文本並粘貼到utf-8中?
- 7. 從mac剪貼板或文本文件讀取到FileMaker變量
- 8. 如何使用html標籤從剪貼板中讀取複製的html文本?
- 9. 如何閱讀谷歌Chrome擴展中的剪貼板文本
- 10. Windows Octave無法從剪貼板粘貼文本?
- 11. Windows Python從剪貼板獲取數據。剪貼板返回以前複製的文字
- 12. 設置文本並從剪貼板中獲取文本
- 13. Android - 每當用戶複製到剪貼板時從剪貼板獲取文本
- 14. 剪貼板在Windows中如何工作?
- 15. 如何從剪貼板獲取通知?
- 16. 如何從剪貼板獲取截圖?
- 17. 如何從HTML文件複製到Python格式文本中的剪貼板?
- 18. 在Javascript中從剪貼板讀取文件
- 19. 如何從剪貼板複製/粘貼樣式文本?
- 20. 如何使用jQuery Mobile從剪貼板粘貼文本?
- 21. 我如何從剪貼板
- 22. 從剪貼板中粘貼文件名
- 23. 如何修改剪貼板文本?
- 24. Python Selenium Webdriver從剪貼板粘貼
- 25. Applescript:從文本文件中讀取內容,將內容複製到剪貼板
- 26. 如何以符合系統標準的格式以剪貼/複製/從Windows剪貼板中獲取文件?
- 27. 如何從剪貼板粘貼到Python窗口中?
- 28. X11獲取剪貼板文本
- 29. UWP:獲取剪貼板文本
- 30. 如何從Android的TextField將文本複製到剪貼板中
與[此問題](http://stackoverflow.com/q/579687/296974)相關。 – glglgl 2012-11-15 13:48:18
在我的情況下,只有[dan](http://stackoverflow.com/users/2084578/dan)答案有效,它使用[clipboard](https://pypi.python.org/pypi/clipboard/0.0.4 )包。 – Soorena 2016-10-09 13:04:20