Найти - Пользователи
Полная версия: Автоматическое чтение буфера обмена при добавлении в него нового строкового значения.
Начало » Python для новичков » Автоматическое чтение буфера обмена при добавлении в него нового строкового значения.
1 2
s0000p
Здравствуйте.
Знающие люди подскажите каким образом можно реализовать механизм автоматической(постоянной, то есть пока работает сам скрипт) проверки буфера обмена (ОS: WinNT+) на предмет наличия в нем строки подпадающей под определенное регулярное выражение. Как я понимаю это будет что-то вроде обработчика события при котором добавляются данные в буфер обмена.

Само чтение из буфера обмена выглядит как-то так.

import tkinter
tk = tkinter.Tk()
print(tk.selection_get(selection = "CLIPBOARD"))

Прошу строго не судить, если вопрос поставлен не корректно. Совсем юный в программировании вообще и в частности на python.


4kpt_II
Там есть два варианта (еще pywin32). Какая задача конкретно решается?
Что будет после того, как вы отследите нужную строчку?
Более подробно опишите…
s0000p
4kpt_II
Там есть два варианта (еще pywin32). Какая задача конкретно решается?Что будет после того, как вы отследите нужную строчку?Более подробно опишите…

Задача: положить строчку с данными о некой аварии из системы мониторинга в буфер обмена, произвести ее парсинг, завести трабл тикет в информационной системе(делается по средствам библиотекеи requests, тут у меня проблем нет). От пользователя требуется только копирование строчки в буфер обмена. Как-то так.
4kpt_II
А из системы мониторинга так вытянуть не получится. А то как-то костыльно получается…
Насколько часто пользователь будет делать такие операции?
Если данные в буфере обнаружены нужные, можно их из буфера удалить?
s0000p
4kpt_II
А из системы мониторинга так вытянуть не получится. А то как-то костыльно получается…Насколько часто пользователь будет делать такие операции?Если данные в буфере обнаружены нужные, можно их из буфера удалить?

Костыльно)) но лучше чем копипаст) А из системы мониторинга просто копирование выделенной строки производится. На счет частоты операций тут даже не знаю, допустим раза 2-3 в течении 5 минут. обработанные данные в буфере не представляют ценности.
4kpt_II
Т.е. дальше эти данные использоваться не будут? Никуда вставлятся тоже не будут?
Тогда можно просто:
1. Поставить прирывание в несколько секунд.
2. Скрипт опрашивает буфер обмена.
3. Если находит там нужные данные, то очищает буфер и ждет дальше. Полученные данные отдает на обработку в другой модуль. А там они уже парсятся и сохраняются как Вы хотите…
4kpt_II
Кстати. Откуда данные копируются? Не из текстового ли файла?
s0000p
4kpt_II
Кстати. Откуда данные копируются? Не из текстового ли файла?

Нет не из текстового,из окна программы.
1. Поставить прирывание в несколько секунд.
2. Скрипт опрашивает буфер обмена.

Можно ввиде кода примерчик я просто не знаю как это реализовать на питоне)) Заранее спасибо за помощь
4kpt_II
Решил. Специфически, конечно, зато универсально для любой системы
Какая версия питона?
bu_
import time
import win32clipboard
while True:
	win32clipboard.OpenClipboard()
	print win32clipboard.GetClipboardData()
	win32clipboard.CloseClipboard()
	time.sleep(2)

Оно?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB