Найти тему
programmer's notes (python and more)

Программирование на языке Python. Работа с буфером обмена с помощью модуля pyperclip

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

pyperclip и работа с буфером обмена

Средства работы с буфером обмена есть в разных библиотеках, например, в PyQt5 или tkinter. С последней библиотекой мы еще с вами даже не знакомились. Но есть и отдельные модули для с работы буфером обмена, например pyperclip.

Установка модуля производится обычным способом

pip3 install pyperclip # pip для Windows

Скажу сразу, что хотя и пишут, что модуль pyperclip кросплатформенный, но есть видимо некоторая специфика в работе в Windows и Linux. Во всяком случае, в Linux, для того, чтобы заработали все возможности модуля (а часть из них работали) мне пришлось инсталлировать пакет xclip. Инсталляция стандартная

sudo apt-get install xclip

Ну, а теперь к возможностям модуля. Рассматриваемый модуль работает только с текстовым содержимым и если в буфере содержится, например, картинка, то модуль считает, что буфер пуст.

Например

#!/usr/bin/python3
import pyperclip as cl
s = cl.paste()

print(s) # вывести текстовое содержимое буфера

Т.е. метод pyperclip.paste() возвращает текст, содержащийся в буфере обмена операционной системы. Для копирования текста в буфера обмена используется метод pyperclip.copy().

#!/usr/bin/python3
import pyperclip as cl
cl.copy('Этот текст отправляется в буфер обмена')
print(cl.paste())

Результат выполнения программы

Этот текст отправляется в буфер обмена

Метод pyperclip.copy() может отправлять в буфер и числа, но всё равно это будет считаться текстом.

Метод pyperclip.waitForPaste() ждёт, когда буфер обмена будет заполнен текстом. Для проверки метода следует отправить в начале в буфер в начале пустую строку (pyperclip.copy('')) или картинку. В качестве аргумента метод может содержать количество секунд ожидания заполнения буфера.

Ожидание (20 секунд) наполнения буфера обмена. Текст программы см. по ссылке ниже
Ожидание (20 секунд) наполнения буфера обмена. Текст программы см. по ссылке ниже
primer275.py

Замечание 1
Метод
pyperclip.waitForPaste() сразу возвращает управление, если в буфере уже есть текст.

Замечание 2
Метод
pyperclip.waitForPaste() также возвращает содержимое буфера обмена. Так что в программе выше можно было сразу написать print(cl.waitForPaste(20)).

Замечание 3
После окончании указанного периода выбрасывается исключение, поэтому в программе используется конструкция
try-except.

Метод pyperclip.waitForNewPaste() ждёт, когда произойдёт изменение содержимое буфера обмена. Поэтому, даже если буфер обмена уже заполнен текстом, метод будет ждать когда содержимое измениться.

Ожидание изменения буфера (20 секунд). Текст программы см. по ссылке ниже
Ожидание изменения буфера (20 секунд). Текст программы см. по ссылке ниже
primer276.py

Ну, пока всё!

Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.

Не нужны мне ваши картинки, напишите, что вы хотите
Не нужны мне ваши картинки, напишите, что вы хотите