파이썬에서 (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())
답변
이것이 파이썬에서 클립 보드에 액세스하는 가장 쉬운 방법이라는 것을 알았습니다.
1) pyperclip 설치 :
pip install pyperclip
2) 사용법 :
import pyperclip
s = pyperclip.paste()
pyperclip.copy(s)
# the type of s is string
Win10 64 비트, Python 3.5 및 Python 3.7.3 (64 비트)에서 테스트되었습니다. 비 ASCII 문자로도 작동하는 것 같습니다. 테스트 된 문자에는 ± ° ©© αβγθΔΨΦåäö가 포함됩니다.
답변
위의 가장 많이 찬성 된 답변은 단순히 클립 보드를 지운 다음 내용을 가져 오는 방식 (그런 다음 비어 있음)이라는 점에서 이상합니다. “포맷 된 텍스트”와 같은 일부 클립 보드 내용 유형이 클립 보드에 저장하려는 일반 텍스트 내용을 “덮지”않도록 클립 보드를 지울 수 있습니다.
다음 코드는 클립 보드의 모든 줄 바꿈을 공백으로 바꾼 다음 모든 이중 공백을 제거하고 마지막으로 콘텐츠를 클립 보드에 다시 저장합니다.
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()
답변
파이썬 표준 라이브러리가합니다 …
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()