10 ответов:
вы можете использовать модуль под названием 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.
вы можете легко сделать это через встроенный модуль Tkinter который в основном является библиотекой GUI. Этот код создает пустой виджет для получения содержимого буфера обмена из ОС.
#from tkinter import Tk # Python 3 from Tkinter import Tk Tk().clipboard_get()
Я видел много предложений по использованию модуля win32, но Tkinter предоставляет самый короткий и простой метод, который я видел, как в этом посте:Как скопировать строку в буфер обмена в Windows с помощью 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()
Если вы не хотите устанавливать дополнительные пакеты,
ctypesможет сделать эту работу также.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()
попробуйте win32clipboard из пакета win32all (который, вероятно, установлен, если вы находитесь на ActiveState Python).
смотрите пример здесь:http://code.activestate.com/recipes/474121/
для меня консольная программа ответы с tkinter выше, не совсем Работа для меня, потому что .destroy() всегда давал ошибку,:
не удается вызвать команду "событие": приложение было уничтожено во время выполнения...
или при использовании .withdraw () окно консоли не вернуло фокус обратно.
чтобы решить эту проблему, вы также должны позвонить .обновление () перед началом .уничтожать.)( Пример:
# Python 3 import tkinter r = tkinter.Tk() text = r.clipboard_get() r.withdraw() r.update() r.destroy()Р.снять() предотвращает отображение кадра в течение миллисекунды, а затем он будет уничтожен, возвращая фокус на консоль.
использовать библиотеку питонов буфер обмена
его просто использовали так:
import clipboard clipboard.copy("this text is now in the clipboard") print clipboard.paste()
я узнал, что это был самый простой способ получить доступ к буферу обмена из Python:
1) Установите pyperclip:
pip install pyperclip2) Использование:
import pyperclip s = pyperclip.paste() pyperclip.copy(s) # the type of s is stringпротестировано на 64-битном Win10, Python 3.5. Кажется, работает и с не-ASCII символами. Проверенные символы включают ±°©©αβγδδψφåäö
стандартная библиотека Python делает это...
try: # Python2 import Tkinter as tk except ImportError: # Python3 import tkinter as tk def getClipboardText(): root = tk.Tk() # keep the window from showing root.withdraw() return root.clipboard_get()
Comments