Как скопировать строку в буфер обмена в Windows, используя Python?
193
Я пытаюсь создать простое приложение для Windows, которое создает строку из пользовательского ввода, а затем добавляет ее в буфер обмена. Как скопировать строку в буфер обмена с помощью Python?
jaraco.clipboard делает это (тоже): clipboard.copy (переменная)
JinSnow
Также смотрите мой ответ на связанный вопрос о копировании в буфер обмена с использованием Tkinter без отображения окна. Он включает в себя функцию Python, которая заменяет / возвращает текст буфера обмена с помощью Tkinter.
Эдвард
Ответы:
286
На самом деле, pywin32и ctypesкажется, излишним для этой простой задачи. Tkinterявляется кроссплатформенным каркасом GUI, который поставляется с Python по умолчанию и имеет методы доступа к буферу обмена вместе с другими интересными вещами
Если все, что вам нужно, это поместить некоторый текст в системный буфер обмена, это сделает это:
fromTkinterimportTk
r =Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.update()# now it stays on the clipboard after the window is closed
r.destroy()
И это все, не нужно возиться с сторонними библиотеками для конкретной платформы.
Если вы используете Python 3, замените TKinterна tkinter.
Получить содержимое буфера обмена: result = r.selection_get (selection = "CLIPBOARD")
MJ
34
@SurDin Tkinter был переименован в tkinter в Python 3, поэтому это зависит от того, какую версию вы используете.
Честный Абэ
24
все мои приложения перестают отвечать после вставки содержимого буфера обмена с помощью этой функции, как ни странно, получение результата работает нормально.
Бартломей Левандовски
14
Это работает, если я не позвоню r.destroy(). Как только я это называю, буфер обмена становится пустым, и нажатие Ctrl-V может привести к зависанию целевого приложения. (ОС: Windows 7 x64)
netvope
8
Для меня это не работает для Python 3.4, но это работает для Python 2.7 (да, с Tkinter вместо Tkinter)
Мэтти
79
У меня не было решения, только обходной путь.
В Windows Vista и далее есть встроенная команда, clipкоторая вызывает вывод команды из командной строки и помещает ее в буфер обмена. Например, ipconfig | clip.
Итак, я сделал функцию с osмодулем, который берет строку и добавляет ее в буфер обмена, используя встроенное решение Windows.
import os
def addToClipBoard(text):
command ='echo '+ text.strip()+'| clip'
os.system(command)# Example
addToClipBoard('penny lane')# Penny Lane is now in your ears, eyes, and clipboard.
Однако, как отмечалось ранее в комментариях, одним из недостатков этого подхода является то, что echoкоманда автоматически добавляет новую строку в конец вашего текста. Чтобы избежать этого, вы можете использовать модифицированную версию команды:
@WilliBallenthin, тогда вам нужно заключить его в двойные кавычки. Но что, если он содержит двойные кавычки? Тогда вам нужно удвоить двойные кавычки. text with " quotes and | pipeстановится, "text with "" quotes and | pipe" хотя это может иметь проблемы в системах с Windows старше 95 лет.
ColBeseder
5
Чрезвычайно небезопасная функция ... Контент, отправляемый в буфер обмена, теперь является вектором входа и, таким образом, увеличивает вашу поверхность атаки.
Фил Л.
2
Мне также нужна поддержка новых строк, поэтому я изменил это, чтобы использовать type. Я записываю свой текст в файл и использую команду type myfile.txt | clip.
Mixopteryx
1
Хотя это лучший ответ для меня, у него есть проблема (Python 3.5, Windows 10); нежелательный символ новой строки всегда добавляется в конце строки. Как этого избежать?
ММД
42
Вы также можете использовать ctypes, чтобы подключиться к Windows API и избежать массивного пакета pywin32. Вот что я использую (извините за плохой стиль, но идея есть):
import ctypes
# Get required functions, strcpy..
strcpy = ctypes.cdll.msvcrt.strcpy
ocb = ctypes.windll.user32.OpenClipboard# Basic clipboard functions
ecb = ctypes.windll.user32.EmptyClipboard
gcd = ctypes.windll.user32.GetClipboardData
scd = ctypes.windll.user32.SetClipboardData
ccb = ctypes.windll.user32.CloseClipboard
ga = ctypes.windll.kernel32.GlobalAlloc# Global memory allocation
gl = ctypes.windll.kernel32.GlobalLock# Global memory Locking
gul = ctypes.windll.kernel32.GlobalUnlock
GMEM_DDESHARE =0x2000defGet():
ocb(None)# Open Clip, Default task
pcontents = gcd(1)# 1 means CF_TEXT.. too lazy to get the token thingy...
data = ctypes.c_char_p(pcontents).value
#gul(pcontents) ?
ccb()return data
defPaste(data):
ocb(None)# Open Clip, Default task
ecb()
hCd = ga(GMEM_DDESHARE, len(bytes(data,"ascii"))+1)
pchData = gl(hCd)
strcpy(ctypes.c_char_p(pchData), bytes(data,"ascii"))
gul(hCd)
scd(1, hCd)
ccb()
По крайней мере, в Python 2.6 x64 мне пришлось перейти bytes(data,"ascii")на bytes(data). Спасибо за ответ на вопрос, я не могу использовать pywin32 или tk или ряд других вещей, и это работает.
Пэт Корвин
1
Не беспокойтесь, но обратите внимание, что данные, возвращаемые из буфера обмена, на самом деле находятся в другой кодировке, я считаю, что это Windows CP-1252. Это было несколько взломано вместе, но если вы не используете правильную кодировку, то символы не-ascii вызовут ошибку или декодируют неправильно.
Kapace
Имена переменных не должны нуждаться в комментариях, и все должны поддерживать Unicode.
Сис Тиммерман,
bytes(data, "mbcs")будет работать с кодировкой Windows по умолчанию. Позволил мне загрузить это в буфер обмена "másreas ç saod é í ó u* ü ö ï/"и прочитать его обратно правильно.
mvbentes
1
использование mbcs дает мне следующее: OSError: исключение: запись нарушения прав доступа 0x0000000000000000
Seaky Lone
35
Вы можете использовать pyperclip - кроссплатформенный модуль буфера обмена. Или Xerox - аналогичный модуль, за исключением того, что для работы в Windows требуется модуль Python win32.
+1. Мне нравится это решение. Это даже проще, чем принятое решение Tkinter. Если вы все равно импортировали панд, дополнительных накладных расходов нет. Это также работает на всех платформах. Он даже (в большинстве случаев) не требует установки нового пакета.
ChaimG
4
это использует в pyperclipлюбом случае, так что лучше использоватьpyperpclip
maxbellec
1
Для большинства людей (то есть для меня) pandasэто легко доступно, но import pyperclipне работает. Так что я не согласен с «лучше использовать pyperclip».
Доктор Core
1
Если вы ограничены использованием только панд, вы можете использовать Pyperclip напрямую import pandas.io.clipboard as pyperclipили назвать его как хотите. Вот где он находится pandas, по крайней мере
Дэвид
1
Это, кажется, добавляет символ новой строки к строке, которую вы копируете
Gijs van Oort
19
Самый простой способ - с помощью Pyperclip . Работает в питоне 2 и 3.
И pyperclipпоставляется ли модуль с Python? Какие версии? Я не вижу этого в Python 2.7 ...
SamB
8
Да, понизьте ответ, который легко решает проблему менее чем за 5 строк; потому что такие мелкие детали, как ссылки, более важны; большое использование stackoverflow мой друг. Я все равно отредактирую для придирки. Совет для вас: ответы на отрицательные ответы, которые бесполезны или не решают проблему; Ответы upvote, которые решают проблему или, по крайней мере, являются полезными и дают предложение в комментариях, чтобы улучшить полезный ответ вместо понижения голосов.
Maviz
3
Без справки вы ничего не решаете. Но, так как вы добавили ссылку, я уберу понижающий голос, так как ответ хороший. Моя большая проблема заключалась в том, что это выглядело как импорт стандартной библиотеки; это выглядело как код, который можно копировать / вставлять, когда это не так.
Gloweye
pyperclip.paste()не работает с изображениями, просто возвращает NoneTypeошибку. но работает с правым кликом и копированием, а затем с помощью Python вставляет скопированные результаты.
JayRizzo
11
Я пробовал различные решения, но это самое простое, которое проходит мой тест :
#coding=utf-8import win32clipboard # http://sourceforge.net/projects/pywin32/def copy(text):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(text, win32clipboard.CF_UNICODETEXT)
win32clipboard.CloseClipboard()def paste():
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT)
win32clipboard.CloseClipboard()return data
if __name__ =="__main__":
text ="Testing\nthe “clip—board”: 📋"try: text = text.decode('utf8')# Python 2 needs decode to make a Unicode string.exceptAttributeError:passprint("%r"% text.encode('utf8'))
copy(text)
data = paste()print("%r"% data.encode('utf8'))print("OK"if text == data else"FAIL")try:print(data)exceptUnicodeEncodeErroras er:print(er)print(data.encode('utf8'))
Проверено нормально в Python 3.4 в Windows 8.1 и Python 2.7 в Windows 7. Также при чтении данных Unicode с переводами строки Unix, скопированными из Windows. Скопированные данные остаются в буфере обмена после выхода из Python:"Testing
the “clip—board”: 📋"
Если вы не хотите никаких внешних зависимостей, используйте этот код (теперь часть кроссплатформенности pyperclip- C:\Python34\Scripts\pip install --upgrade pyperclip):
def copy(text):
GMEM_DDESHARE =0x2000
CF_UNICODETEXT =13
d = ctypes.windll # cdll expects 4 more bytes in user32.OpenClipboard(None)try:# Python 2ifnot isinstance(text, unicode):
text = text.decode('mbcs')exceptNameError:ifnot isinstance(text, str):
text = text.decode('mbcs')
d.user32.OpenClipboard(0)
d.user32.EmptyClipboard()
hCd = d.kernel32.GlobalAlloc(GMEM_DDESHARE, len(text.encode('utf-16-le'))+2)
pchData = d.kernel32.GlobalLock(hCd)
ctypes.cdll.msvcrt.wcscpy(ctypes.c_wchar_p(pchData), text)
d.kernel32.GlobalUnlock(hCd)
d.user32.SetClipboardData(CF_UNICODETEXT, hCd)
d.user32.CloseClipboard()def paste():
CF_UNICODETEXT =13
d = ctypes.windll
d.user32.OpenClipboard(0)
handle = d.user32.GetClipboardData(CF_UNICODETEXT)
text = ctypes.c_wchar_p(handle).value
d.user32.CloseClipboard()return text
Где вы берете win32clipboard? Это не часть моего Python 2.7. И почему pasteиспользуют CF_TEXTвместо CF_UNICODETEXT?
Марк Рэнсом
@MarkRansom pywin32, и потому что мой тест работал нормально, пока я не усложнил его использование 📋. Я обновил код.
Сис Тиммерман,
11
По какой-то причине мне так и не удалось заставить решение Tk работать на меня. Решение kapace гораздо более работоспособно, но форматирование противоречит моему стилю и не работает с Unicode. Вот модифицированная версия.
import ctypes
OpenClipboard= ctypes.windll.user32.OpenClipboardEmptyClipboard= ctypes.windll.user32.EmptyClipboardGetClipboardData= ctypes.windll.user32.GetClipboardDataSetClipboardData= ctypes.windll.user32.SetClipboardDataCloseClipboard= ctypes.windll.user32.CloseClipboard
CF_UNICODETEXT =13GlobalAlloc= ctypes.windll.kernel32.GlobalAllocGlobalLock= ctypes.windll.kernel32.GlobalLockGlobalUnlock= ctypes.windll.kernel32.GlobalUnlockGlobalSize= ctypes.windll.kernel32.GlobalSize
GMEM_MOVEABLE =0x0002
GMEM_ZEROINIT =0x0040
unicode_type = type(u'')def get():
text =NoneOpenClipboard(None)
handle =GetClipboardData(CF_UNICODETEXT)
pcontents =GlobalLock(handle)
size =GlobalSize(handle)if pcontents and size:
raw_data = ctypes.create_string_buffer(size)
ctypes.memmove(raw_data, pcontents, size)
text = raw_data.raw.decode('utf-16le').rstrip(u'\0')GlobalUnlock(handle)CloseClipboard()return text
def put(s):ifnot isinstance(s, unicode_type):
s = s.decode('mbcs')
data = s.encode('utf-16le')OpenClipboard(None)EmptyClipboard()
handle =GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, len(data)+2)
pcontents =GlobalLock(handle)
ctypes.memmove(pcontents, data, len(data))GlobalUnlock(handle)SetClipboardData(CF_UNICODETEXT, handle)CloseClipboard()
paste = get
copy = put
Вышеизложенное изменилось с тех пор, как этот ответ был впервые создан, чтобы лучше справляться с расширенными символами Unicode и Python 3. Он был протестирован в Python 2.7 и 3.5 и работает даже с такими смайликами, как \U0001f601 (😁).
@CeesTimmerman Я бы хотел иметь систему Windows 8.1, чтобы проверить почему. У меня мог бы быть шанс исследовать позже сегодня. Вы уверены, что у вас есть текст в буфер обмена?
Марк Рэнсом
Да. За последние три дня я тщательно тестировал код буфера обмена в Python.
Сис Тиммерман,
put()Функция также нуждается в работе; emoji "📋" (\ U0001f400) копируется как "🐀" (\ U0001f4cb) или "📋." превращается в «📋».
Сис Тиммерман
@CeesTimmerman, который это объясняет. Внутреннее представление Unicode изменилось, я не могу вспомнить, было ли это 3.3 или 3.4. Чтобы исправить это, потребуется явная кодировка UTF-16. Это не ошибка.
Марк Рэнсом
1
@YngvarKristiansen Я наконец-то нашел время для этих изменений. Теперь я уверен, что этот код работает для большинства современных версий Python и всех возможных символов Unicode.
Марк Рэнсом
10
Похоже, вам нужно добавить win32clipboard к вашим сайт-пакетам. Это часть пакета pywin32
Вот самый простой и надежный способ, который я нашел, если ты в порядке в зависимости от Панд. Однако я не думаю, что это официально является частью Pandas API, поэтому он может порвать с будущими обновлениями. Работает на 0.25.3
Вы можете использовать модуль clipboard. Это просто и чрезвычайно удобно в использовании. Работает с Mac , Windows и Linux . Примечание: это альтернативаpyperclip
Это кажется лучшим решением. буфер обмена может быть установлен с pip install clipboard.
vy32
3
У виджетов также есть метод named, .clipboard_get()который возвращает содержимое буфера обмена (если только не возникает какая-либо ошибка в зависимости от типа данных в буфере обмена).
Это хорошее решение, но я полагаю, что большая часть python разработана и запущена в IDE
Джесси Реза Хорасани
2
В дополнение к ответу Марка Рэнсома с использованием ctypes: это не работает для (всех?) Систем x64, так как дескрипторы кажутся усеченными до размера int. Явное определение аргументов и возвращаемых значений помогает преодолеть эту проблему.
функция для копирования текста в буфер обмена. Использование библиотеки Python WX (я никогда не изучал TK) другое решение вопроса, заданного здесь.
пятницу,
Не стесняйтесь редактировать ответ, включив в него свое объяснение проблемы / решения @jlk - это обычно делает ответы более полезными. Кроме того, спасибо за попытку, но я предполагаю, что у оригинального плаката была какая-то причина, чтобы просить Tk конкретно
ледяная вода
0
Фрагмент, которым я делюсь здесь, использует возможность форматирования текстовых файлов: что, если вы хотите скопировать сложный вывод в буфер обмена? (Скажем, массив в столбце или список чего-то)
import subprocess
import os
def cp2clip(clist):#create a temporary file
fi=open("thisTextfileShouldNotExist.txt","w")#write in the text file the way you want your data to befor m in clist:
fi.write(m+"\n")#close the file
fi.close()#send "clip < file" to the shell
cmd="clip < thisTextfileShouldNotExist.txt"
w = subprocess.check_call(cmd,shell=True)#delete the temporary text file
os.remove("thisTextfileShouldNotExist.txt")return w
работает только для Windows, может быть адаптирован для Linux или Mac, я думаю. Может быть немного сложнее ...
Не все ответы работали для моих различных конфигураций Python, поэтому это решение использует только модуль подпроцесса. Тем copy_keywordне менее, должно быть pbcopyдля Mac или clipдля Windows:
import subprocess
subprocess.run('copy_keyword', universal_newlines=True, input='New Clipboard Value 😀')
Вот еще более обширный код, который автоматически проверяет текущую операционную систему:
import platform
import subprocess
copy_string ='New Clipboard Value 😀'# Check which operating system is running to get the correct copying keyword.if platform.system()=='Darwin':
copy_keyword ='pbcopy'elif platform.system()=='Windows':
copy_keyword ='clip'
subprocess.run(copy_keyword, universal_newlines=True, input=copy_string)
может быть, вы можете быть конструктивны и сообщить об ошибке, которую вы получите, и версию python, которую вы используете. две строки, которые я написал, работают с python 2. спасибо
tagoma
2
Вопрос в том, «как скопировать строку в буфер обмена в Windows, используя Python». Конечно, это не сбой, но это не совсем удовлетворяет вопрос в том, что на самом деле он вообще ничего
Антти Хаапала
2
Q: как мне скопировать строку в буфер обмена Windows, используя Python? A: импортировать библиотеку GUI и создать корневой объект. , Извините, как это вообще отвечает на поставленный вопрос?
Мартин Питерс
с python3 вы можете сделать что-то в этом направлении: import tkinter> tki = tkinter.Tk ()> tki.clipboard_clear () # очистить текущий буфер обмена> mystring = 'Hello World'> tki.clipboard_append (mystring)> tki.clipboard_get ( ) Out [19]: «Hello World»>
tagoma
2
Тогда сделайте это ответом. На самом деле у вас нет ничего полезного здесь. Вы проверяли это на Windows?
Ответы:
На самом деле,
pywin32
иctypes
кажется, излишним для этой простой задачи.Tkinter
является кроссплатформенным каркасом GUI, который поставляется с Python по умолчанию и имеет методы доступа к буферу обмена вместе с другими интересными вещамиЕсли все, что вам нужно, это поместить некоторый текст в системный буфер обмена, это сделает это:
И это все, не нужно возиться с сторонними библиотеками для конкретной платформы.
Если вы используете Python 3, замените
TKinter
наtkinter
.источник
r.destroy()
. Как только я это называю, буфер обмена становится пустым, и нажатие Ctrl-V может привести к зависанию целевого приложения. (ОС: Windows 7 x64)У меня не было решения, только обходной путь.
В Windows Vista и далее есть встроенная команда,
clip
которая вызывает вывод команды из командной строки и помещает ее в буфер обмена. Например,ipconfig | clip
.Итак, я сделал функцию с
os
модулем, который берет строку и добавляет ее в буфер обмена, используя встроенное решение Windows.Однако, как отмечалось ранее в комментариях, одним из недостатков этого подхода является то, что
echo
команда автоматически добавляет новую строку в конец вашего текста. Чтобы избежать этого, вы можете использовать модифицированную версию команды:Если вы используете Windows XP, она будет работать, просто следуя инструкциям в разделе Копирование и вставка из командной строки Windows XP Pro прямо в буфер обмена .
источник
text
содержит| calc.exe
?text with " quotes and | pipe
становится,"text with "" quotes and | pipe"
хотя это может иметь проблемы в системах с Windows старше 95 лет.type
. Я записываю свой текст в файл и использую командуtype myfile.txt | clip
.Вы также можете использовать ctypes, чтобы подключиться к Windows API и избежать массивного пакета pywin32. Вот что я использую (извините за плохой стиль, но идея есть):
источник
bytes(data,"ascii")
наbytes(data)
. Спасибо за ответ на вопрос, я не могу использовать pywin32 или tk или ряд других вещей, и это работает.bytes(data, "mbcs")
будет работать с кодировкой Windows по умолчанию. Позволил мне загрузить это в буфер обмена"másreas ç saod é í ó u* ü ö ï/"
и прочитать его обратно правильно.Вы можете использовать pyperclip - кроссплатформенный модуль буфера обмена. Или Xerox - аналогичный модуль, за исключением того, что для работы в Windows требуется модуль Python win32.
источник
pyperclip
не выполняет Unicode в Windows.win32clipboard
делает.pyperclip
патч был принят;c:\python34\Scripts\pip install --upgrade pyperclip
обрабатывать текст Unicode.pyperclip
не такpaperclip
. Также, как и в 2016 году, pyperclip работает и с символами Unicode. Я проверил символы ± ° ©---- αβγθΔΨΦåäö для работы на Win10 64-bit, с Python 3.5 и pyperclip 1.5.27.Вы можете использовать отличные панды, которые имеют встроенную поддержку буфера обмена, но вам нужно пройти через DataFrame.
источник
pyperclip
любом случае, так что лучше использоватьpyperpclip
pandas
это легко доступно, ноimport pyperclip
не работает. Так что я не согласен с «лучше использовать pyperclip».import pandas.io.clipboard as pyperclip
или назвать его как хотите. Вот где он находитсяpandas
, по крайней мереСамый простой способ - с помощью Pyperclip . Работает в питоне 2 и 3.
Чтобы установить эту библиотеку, используйте:
Пример использования:
Если вы хотите получить содержимое буфера обмена:
источник
pyperclip
поставляется ли модуль с Python? Какие версии? Я не вижу этого в Python 2.7 ...pyperclip.paste()
не работает с изображениями, просто возвращаетNoneType
ошибку. но работает с правым кликом и копированием, а затем с помощью Python вставляет скопированные результаты.Я пробовал различные решения, но это самое простое, которое проходит мой тест :
Проверено нормально в Python 3.4 в Windows 8.1 и Python 2.7 в Windows 7. Также при чтении данных Unicode с переводами строки Unix, скопированными из Windows. Скопированные данные остаются в буфере обмена после выхода из Python:
"Testing the “clip—board”: 📋"
Если вы не хотите никаких внешних зависимостей, используйте этот код (теперь часть кроссплатформенности
pyperclip
-C:\Python34\Scripts\pip install --upgrade pyperclip
):источник
win32clipboard
? Это не часть моего Python 2.7. И почемуpaste
используютCF_TEXT
вместоCF_UNICODETEXT
?По какой-то причине мне так и не удалось заставить решение Tk работать на меня. Решение kapace гораздо более работоспособно, но форматирование противоречит моему стилю и не работает с Unicode. Вот модифицированная версия.
Вышеизложенное изменилось с тех пор, как этот ответ был впервые создан, чтобы лучше справляться с расширенными символами Unicode и Python 3. Он был протестирован в Python 2.7 и 3.5 и работает даже с такими смайликами, как
\U0001f601 (😁)
.источник
put()
Функция также нуждается в работе; emoji "📋" (\ U0001f400) копируется как "🐀" (\ U0001f4cb) или "📋." превращается в «📋».Похоже, вам нужно добавить win32clipboard к вашим сайт-пакетам. Это часть пакета pywin32
источник
Вот самый простой и надежный способ, который я нашел, если ты в порядке в зависимости от Панд. Однако я не думаю, что это официально является частью Pandas API, поэтому он может порвать с будущими обновлениями. Работает на 0.25.3
источник
Вы можете использовать модуль
clipboard
. Это просто и чрезвычайно удобно в использовании. Работает с Mac , Windows и Linux .Примечание: это альтернатива
pyperclip
После установки импортируйте его:
Затем вы можете скопировать так:
Вы также можете вставить скопированный текст:
источник
pip install clipboard
.У виджетов также есть метод named,
.clipboard_get()
который возвращает содержимое буфера обмена (если только не возникает какая-либо ошибка в зависимости от типа данных в буфере обмена).clipboard_get()
Метод упоминается в этом сообщении об ошибке:http://bugs.python.org/issue14777
Странно, но этот метод не упоминался в распространенных (но неофициальных) источниках документации TkInter, на которые я обычно ссылаюсь.
источник
Я думаю, что есть гораздо более простое решение для этого.
Затем запустите вашу программу в командной строке
Это передаст вывод вашего файла в буфер обмена
источник
В дополнение к ответу Марка Рэнсома с использованием ctypes: это не работает для (всех?) Систем x64, так как дескрипторы кажутся усеченными до размера int. Явное определение аргументов и возвращаемых значений помогает преодолеть эту проблему.
источник
источник
Фрагмент, которым я делюсь здесь, использует возможность форматирования текстовых файлов: что, если вы хотите скопировать сложный вывод в буфер обмена? (Скажем, массив в столбце или список чего-то)
работает только для Windows, может быть адаптирован для Linux или Mac, я думаю. Может быть немного сложнее ...
пример:
Ctrl + V в любом текстовом редакторе:
источник
Это улучшенный ответ распылителя .
Обратите внимание на 2 вызова
update()
и200 ms
задержку между ними. Они защищают приложения замораживания из-за нестабильного состояния буфера обмена:источник
Используйте библиотеку буфера обмена python!
Буфер обмена содержит «abc» сейчас. Счастливого вставки!
источник
Не все ответы работали для моих различных конфигураций Python, поэтому это решение использует только модуль подпроцесса. Тем
copy_keyword
не менее, должно бытьpbcopy
для Mac илиclip
для Windows:Вот еще более обширный код, который автоматически проверяет текущую операционную систему:
источник
Вы можете использовать модуль winclip32! установить:
копировать:
получить:
для получения дополнительной информации: https://pypi.org/project/winclip32/
источник
Фрагмент кода для копирования в буфер обмена:
Создайте код оболочки Python в модуле с именем ( clipboard.py ):
Затем импортируйте вышеуказанный модуль в ваш код.
Я должен отдать должное сообщению в блоге Доступ к буферу обмена в IronPython .
источник
Вы можете попробовать это:
источник
источник