Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

Làm cách nào để đọc văn bản từ clipboard (Windows) với Python?

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

DREFTYMAC

30.3k26 Huy hiệu vàng115 Huy hiệu bạc178 Huy hiệu đồng26 gold badges115 silver badges178 bronze badges

Hỏi ngày 19 tháng 9 năm 2008 lúc 11:09Sep 19, 2008 at 11:09

2

Bạn có thể sử dụng mô -đun có tên Win32Clipboard, là một phần của PYWIN32.

Dưới đây là một ví dụ đầu tiên đặt dữ liệu clipboard sau đó nhận được nó:

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

Một lời nhắc nhở quan trọng từ tài liệu:

Khi cửa sổ đã hoàn tất việc kiểm tra hoặc thay đổi bảng tạm, hãy đóng bảng tạm bằng cách gọi ClostClipboard. Điều này cho phép các cửa sổ khác truy cập vào bảng tạm. Không đặt một đối tượng trên bảng tạm sau khi gọi ClostClipboard.

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

Graham

2.5253 huy hiệu vàng15 Huy hiệu bạc29 Huy hiệu đồng3 gold badges15 silver badges29 bronze badges

Đã trả lời ngày 19 tháng 9 năm 2008 lúc 11:20Sep 19, 2008 at 11:20

SakinsakinSakin

3.2473 Huy hiệu vàng23 Huy hiệu bạc27 Huy hiệu đồng3 gold badges23 silver badges27 bronze badges

5

Bạn có thể dễ dàng thực hiện việc này thông qua mô-đun tích hợp Tkinter, về cơ bản là một thư viện GUI. Mã này tạo ra một tiện ích trống để lấy nội dung Clipboard từ HĐH.

from tkinter import Tk  # Python 3
#from Tkinter import Tk # for Python 2.x
Tk().clipboard_get()

Đã trả lời ngày 24 tháng 5 năm 2014 lúc 11:58May 24, 2014 at 11:58

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

Kmonsoorkmonsoorkmonsoor

7.1127 Huy hiệu vàng42 Huy hiệu bạc55 Huy hiệu Đồng7 gold badges42 silver badges55 bronze badges

1

Tôi thấy PyPerclip là cách dễ nhất để có quyền truy cập vào bảng tạm từ Python:

  1. Cài đặt pyperclip:

    from tkinter import Tk  # Python 3
    #from Tkinter import Tk # for Python 2.x
    Tk().clipboard_get()
    
    3

  2. Usage:

import pyperclip
    
s = pyperclip.paste()
pyperclip.copy(s)
    
# the type of s is string

Với hỗ trợ Windows, Linux và Mac, và dường như cũng hoạt động với các ký tự không phải ASCII. Các ký tự được thử nghiệm bao gồm ± ° © © αβγθδψφåäö

Đã trả lời ngày 3 tháng 7 năm 2016 lúc 15:54Jul 3, 2016 at 15:54

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

np8np8np8

23.2K10 Huy hiệu vàng80 Huy hiệu bạc90 Huy hiệu Đồng10 gold badges80 silver badges90 bronze badges

6

Nếu bạn không muốn cài đặt các gói bổ sung,

from tkinter import Tk  # Python 3
#from Tkinter import Tk # for Python 2.x
Tk().clipboard_get()
4 cũng có thể hoàn thành công việc.

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())

Đã trả lời ngày 25 tháng 4 năm 2014 lúc 5:54Apr 25, 2014 at 5:54

Kichikkichikkichik

31.5K6 Huy hiệu vàng87 Huy hiệu bạc106 Huy hiệu đồng6 gold badges87 silver badges106 bronze badges

5

Câu trả lời được nâng cấp nhiều nhất ở trên là kỳ lạ theo cách mà nó chỉ đơn giản là xóa bảng tạm và sau đó nhận được nội dung (lúc đó trống rỗng). Người ta có thể xóa bảng tạm để chắc chắn rằng một số loại nội dung clipboard như "văn bản được định hình" không "bao gồm" nội dung văn bản đơn giản mà bạn muốn lưu trong bảng tạm.

Đoạn mã sau đây thay thế tất cả các dòng mới trong bảng tạm bằng không gian, sau đó xóa tất cả các không gian đôi và cuối cùng lưu nội dung trở lại bảng tạm:

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()

Đã trả lời ngày 19 tháng 6 năm 2012 lúc 8:00Jun 19, 2012 at 8:00

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

sinh raborn

4981 Huy hiệu vàng4 Huy hiệu bạc13 Huy hiệu đồng1 gold badge4 silver badges13 bronze badges

Thư viện tiêu chuẩn Python làm điều đó ...

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()

Ankostis

7,8343 huy hiệu vàng41 Huy hiệu bạc57 Huy hiệu đồng3 gold badges41 silver badges57 bronze badges

Đã trả lời ngày 4 tháng 4 năm 2018 lúc 8:42Apr 4, 2018 at 8:42

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

2

Sử dụng bảng tạm thư của Pythons

Nó chỉ đơn giản là được sử dụng như thế này:

import clipboard
clipboard.copy("this text is now in the clipboard")
print clipboard.paste()  

Đã trả lời ngày 27 tháng 4 năm 2016 lúc 10:19Apr 27, 2016 at 10:19

DandanDan

Huy hiệu đồng 1491 Bạc4 Huy hiệu đồng1 silver badge4 bronze badges

3

Đối với chương trình giao diện điều khiển của tôi, các câu trả lời với tkinter ở trên không hoàn toàn phù hợp với tôi vì .destroy () luôn gây ra lỗi,:console program the answers with tkinter above did not quite work for me because the .destroy() always gave an error,:

Không thể gọi lệnh "Sự kiện": Ứng dụng đã bị phá hủy trong khi thực thi ...

hoặc khi sử dụng .WithDraw () cửa sổ bảng điều khiển không lấy lại tiêu điểm.

Để giải quyết điều này, bạn cũng phải gọi .Update () trước .destroy (). Thí dụ:

# Python 3
import tkinter

r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()

R.WithDraw () ngăn chặn khung hình hiển thị cho một milisecond, và sau đó nó sẽ bị phá hủy cho trọng tâm trở lại bảng điều khiển.

Đã trả lời ngày 17 tháng 1 năm 2015 lúc 1:08Jan 17, 2015 at 1:08

user136036user136036user136036

9,9406 Huy hiệu vàng41 Huy hiệu bạc46 Huy hiệu đồng6 gold badges41 silver badges46 bronze badges

Một thủ thuật không trực tiếp lắm:

Sử dụng phím nóng pyautogui:

________số 8

Do đó, bạn có thể dán dữ liệu bảng tạm như bạn muốn.

Đã trả lời ngày 9 tháng 7 năm 2019 lúc 7:06Jul 9, 2019 at 7:06

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

1

Sau 12 năm, tôi có một giải pháp và bạn có thể sử dụng nó mà không cần cài đặt bất kỳ gói nào.

from tkinter import Tk, TclError
from time import sleep

while True:
    try:
        clipboard = Tk().clipboard_get()
        print(clipboard)
        sleep(5)
    except TclError:
        print("Clipboard is empty.")
        sleep(5)

Đã trả lời ngày 29 tháng 4 năm 2021 lúc 19:17Apr 29, 2021 at 19:17

from tkinter import Tk  # Python 3
#from Tkinter import Tk # for Python 2.x
Tk().clipboard_get()
0

Đã trả lời ngày 7 tháng 12 năm 2021 lúc 4:21Dec 7, 2021 at 4:21

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

AthiiathiiAthii

952 huy hiệu bạc11 huy hiệu đồng2 silver badges11 bronze badges

1

Tại sao không thử gọi PowerShell?

from tkinter import Tk  # Python 3
#from Tkinter import Tk # for Python 2.x
Tk().clipboard_get()
1

Đã trả lời ngày 18 tháng 2 lúc 5:36Feb 18 at 5:36

Hướng dẫn can python access the clipboard? - python có thể truy cập khay nhớ tạm không?

1

Đối với người dùng Anaconda: Các bản phân phối không đi kèm với pyperclip, nhưng chúng đi kèm với gấu trúc trong đó phân phối lại pyperclip:

from tkinter import Tk  # Python 3
#from Tkinter import Tk # for Python 2.x
Tk().clipboard_get()
2

Tôi thấy điều này dễ sử dụng hơn pywin32 (cũng được bao gồm trong phân phối).

Đã trả lời ngày 6 tháng 12 năm 2021 lúc 16:14Dec 6, 2021 at 16:14

asdf101asdf101asdf101

4735 Huy hiệu bạc16 Huy hiệu Đồng5 silver badges16 bronze badges

Làm thế nào đọc dữ liệu từ clipboard trong Python?

Bạn có thể sử dụng mô -đun có tên Win32Clipboard, là một phần của PYWIN32.Một lời nhắc nhở quan trọng từ tài liệu: Khi cửa sổ đã kiểm tra xong hoặc thay đổi bảng tạm, đóng bảng tạm bằng cách gọi ClostClipboard.Điều này cho phép các cửa sổ khác truy cập vào bảng tạm.use the module called win32clipboard, which is part of pywin32. An important reminder from the documentation: When the window has finished examining or changing the clipboard, close the clipboard by calling CloseClipboard. This enables other windows to access the clipboard.

Bạn có thể sao chép vào bảng tạm trong Python không?

Trong Python, bạn có thể sao chép văn bản (chuỗi) vào bảng tạm và dán (nhận) văn bản từ bảng tạm với pyperclip.Bạn cũng có thể theo dõi bảng tạm để nhận văn bản khi được cập nhật.asweigart/pyperclip: Mô-đun Python cho các chức năng clipboard đa nền tảng.you can copy text (string) to the clipboard and paste (get) text from the clipboard with pyperclip. You can also monitor the clipboard to get the text when updated. asweigart/pyperclip: Python module for cross-platform clipboard functions.

Làm thế nào để bạn dán một bảng tạm trong Python?

Cách sao chép văn bản vào bảng tạm trong Python..
nhập pyperclip ..
S1 = "Hello World".
pyperclip.Sao chép (S1).
S2 = pyperclip.dán().
print(s2).

Làm thế nào để tôi có được một hình ảnh từ bảng tạm ở Python?

Trong Python, bạn có thể lấy hình ảnh từ bảng tạm với hàm ImageGrab.grabClipboard () trong gối (PIL).Tính đến phiên bản 9.1.0 (tháng 4 năm 2022), nó chỉ có sẵn cho Windows và MacOS.ImageGrab. grabclipboard() function in Pillow(PIL). As of version 9.1. 0 (April 2022), it is available only for Windows and macOS.