파이썬에서 (Windows) 클립 보드의 텍스트를 어떻게 읽습니까?
파이썬에서 (Windows) 클립 보드의 텍스트를 어떻게 읽습니까?
pywin32의 일부인 win32clipboard 라는 모듈을 사용할 수 있습니다 .
다음은 먼저 클립 보드 데이터를 설정 한 다음 가져 오는 예입니다.
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를 호출 한 후 클립 보드에 개체를 배치하지 마십시오.
기본적으로 GUI 라이브러리 인 내장 모듈 Tkinter 를 통해 쉽게 수행 할 수 있습니다 . 이 코드는 OS에서 클립 보드 콘텐츠를 가져 오기 위해 빈 위젯을 만듭니다.
#from tkinter import Tk # Python 3
from Tkinter import Tk
Tk().clipboard_get()
win32 모듈 사용에 대한 많은 제안을 보았지만 Tkinter는이 게시물에서 본 것 중 가장 짧고 쉬운 방법을 제공합니다. Python을 사용하여 Windows에서 클립 보드에 문자열을 어떻게 복사합니까?
또한 Tkinter는 파이썬 표준 라이브러리에 있습니다.
추가 패키지를 설치하지 않으려면 ctypes
작업도 완료 할 수 있습니다.
import ctypes
CF_TEXT = 1
kernel32 = ctypes.windll.kernel32
kernel32.GlobalLock.argtypes = [ctypes.c_void_p]
kernel32.GlobalLock.restype = ctypes.c_void_p
kernel32.GlobalUnlock.argtypes = [ctypes.c_void_p]
user32 = ctypes.windll.user32
user32.GetClipboardData.restype = ctypes.c_void_p
def get_clipboard_text():
user32.OpenClipboard(0)
try:
if user32.IsClipboardFormatAvailable(CF_TEXT):
data = user32.GetClipboardData(CF_TEXT)
data_locked = kernel32.GlobalLock(data)
text = ctypes.c_char_p(data_locked)
value = text.value
kernel32.GlobalUnlock(data_locked)
return value
finally:
user32.CloseClipboard()
print(get_clipboard_text())
위의 가장 많이 찬성 된 답변은 단순히 클립 보드를 지운 다음 내용을 가져 오는 방식 (그런 다음 비어 있음)이라는 점에서 이상합니다. "포맷 된 텍스트"와 같은 일부 클립 보드 콘텐츠 유형이 클립 보드에 저장하려는 일반 텍스트 콘텐츠를 "덮지"않도록 클립 보드를 지울 수 있습니다.
다음 코드는 클립 보드의 모든 줄 바꿈을 공백으로 바꾼 다음 모든 이중 공백을 제거하고 마지막으로 콘텐츠를 다시 클립 보드에 저장합니다.
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()
I found out this was the easiest way to get access to the clipboard from python:
1) Install pyperclip: pip install pyperclip
2) Usage:
import pyperclip
s = pyperclip.paste()
pyperclip.copy(s)
# the type of s is string
Tested on Win10 64-bit, Python 3.5. Seems to work with non-ASCII characters, too. Tested characters include ±°©©αβγθΔΨΦåäö
The python standard library does it...
try:
# Python3
import tkinter as tk
except ImportError:
# Python2
import Tkinter as tk
def getClipboardText():
root = tk.Tk()
# keep the window from showing
root.withdraw()
return root.clipboard_get()
Try win32clipboard from the win32all package (that's probably installed if you're on ActiveState Python).
See sample here: http://code.activestate.com/recipes/474121/
For my console program the answers with tkinter above did not quite work for me because the .destroy() always gave an error,:
can't invoke "event" command: application has been destroyed while executing...
or when using .withdraw() the console window did not get the focus back.
To solve this you also have to call .update() before the .destroy(). Example:
# Python 3
import tkinter
r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()
The r.withdraw() prevents the frame from showing for a milisecond, and then it will be destroyed giving the focus back to the console.
Use Pythons library Clipboard
Its simply used like this:
import clipboard
clipboard.copy("this text is now in the clipboard")
print clipboard.paste()
A not very direct trick:
Use pyautogui hotkey:
Import pyautogui
pyautogui.hotkey('ctrl', 'v')
Therefore, you can paste the clipboard data as you like.
참고URL : https://stackoverflow.com/questions/101128/how-do-i-read-text-from-the-windows-clipboard-from-python
'developer tip' 카테고리의 다른 글
JavaScript의 포인터? (0) | 2020.10.16 |
---|---|
HTTPS 페이지에서 HTTP AJAX 작업을 실행할 때 "혼합 콘텐츠 차단됨" (0) | 2020.10.16 |
데이터베이스에 암호를 저장하는 기본 방법 (0) | 2020.10.16 |
unsigned char *에서 const char *로 C ++ 스타일 캐스트 (0) | 2020.10.16 |
OPENQUERY에 매개 변수 포함 (0) | 2020.10.16 |