Làm cách nào để đọc văn bản từ khay nhớ tạm (cửa sổ) từ python?Làm cách nào để đọc văn bản từ khay nhớ tạm (cửa sổ) từ python?
Trả lời
Bạn có thể sử dụng các module gọi win32clipboard, mà là một phần của pywin32.
Dưới đây là một ví dụ mà đầu tiên đặt dữ liệu vào clipboard sau đó đượ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ừ các tài liệu:
Khi cửa sổ đã hoàn tất việc kiểm tra hoặc thay đổi clipboard, đóng clipboard bằng cách gọi CloseClipboard. Điều này cho phép các cửa sổ khác truy cập vào khay nhớ tạm. Không đặt một đối tượng trên khay nhớ tạm sau khi gọi CloseClipboard.
Bạn có biết cách sử dụng câu lệnh 'with´? – Norfeldt
Đáng chú ý, trong py34, win7, SetClipboardText không hoạt động mà không có cuộc gọi trước tới EmptyClipboard – CoderTao
Mô-đun này hữu ích nếu bạn muốn thực hiện các thao tác phức tạp hơn, ví dụ: lấy nội dung được định dạng HTML ra khỏi khay nhớ tạm. Xem http://stackoverflow.com/questions/17298897/how-can-i-copy-from-an-html-file-to-the-clipboard-in-python-in-formatted-text –
Hãy thử win32clipboard từ gói win32all (có thể được cài đặt nếu bạn đang sử dụng ActiveState Python).
Xem mẫu ở đây: http://code.activestate.com/recipes/474121/
Tôi đã nhìn thấy nhiều gợi ý để sử dụng các mô-đun win32, nhưng Tkinter cung cấp các phương pháp ngắn nhất và dễ nhất tôi đã nhìn thấy, như trong bài này: How do I copy a string to the clipboard on Windows using Python?
Plus, Tkinter là trong thư viện chuẩn python .
Một số mã sẽ nhận được giá trị clipboard qua Tkinter: từ nhập Tkinter Tk [\ nl] r = Tk() [\ nl] kết quả = r.selection_get (chọn = "CLIPBOARD") [\ nl] r.destroy() – mgkrebbs
Câu trả lời được trả lời nhiều nhất ở trên là lạ theo cách đơn giản là xóa Clipboard và sau đó tải nội dung (sau đó sẽ trống). Người ta có thể xóa clipboard để chắc chắn rằng một số loại nội dung clipboard như "văn bản được định dạng" không "che" nội dung văn bản thuần túy của bạn mà bạn muốn lưu vào khay nhớ tạm.
Các đoạn mã sau thay thế tất cả các dòng mới trong clipboard bằng dấu cách, sau đó loại bỏ tất cả các không gian hai và cuối cùng là tiết kiệm nội dung trở lại vào clipboard:
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()
Nếu bạn không muốn cài đặt các gói thêm , ctypes
cũng có thể hoàn thành công việc.
import ctypes
CF_TEXT = 1
kernel32 = ctypes.windll.kernel32
user32 = ctypes.windll.user32
user32.OpenClipboard(0)
if user32.IsClipboardFormatAvailable(CF_TEXT):
data = user32.GetClipboardData(CF_TEXT)
data_locked = kernel32.GlobalLock(data)
text = ctypes.c_char_p(data_locked)
print(text.value)
kernel32.GlobalUnlock(data_locked)
else:
print('no text in clipboard')
user32.CloseClipboard()
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 cơ bản là thư viện GUI. Mã này tạo ra một widget trống để có được nội dung clipboard từ hệ điều hành.
#from tkinter import Tk # Python 3
from Tkinter import Tk
Tk().clipboard_get()
Vui lòng thêm nhận xét vào mã này và (có thể) liên kết đến tài liệu vui chơi. –
@jb. done :) cảm ơn ghi chú – kmonsoor
Đối với giao diện điều khiển chương trình tôi câu trả lời với Tkinter trên đã không hoàn toàn công việc cho tôi vì .destroy() luôn luôn đưa ra một lỗi ,:
không thể gọi "sự kiện" lệnh : ứng dụng đã bị phá hủy trong khi thực hiện ...
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().Ví dụ:
# Python 3
import tkinter
r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()
R.withdraw() ngăn khung hiển thị trong một mili giây và sau đó nó sẽ bị hủy để đưa tiêu điểm trở lại bảng điều khiển.
Sử dụng Trăn thư viện Clipboard
của nó chỉ đơn giản là sử dụng như thế này:
import clipboard
clipboard.copy("this text is now in the clipboard")
print clipboard.paste()
tôi phát hiện ra đây là cách dễ nhất để có được quyền truy cập vào clipboard từ python:
1) Cài đặt pyperclip : pip install pyperclip
2) Cách sử dụng:
import pyperclip
s = pyperclip.paste()
pyperclip.copy(s)
# the type of s is string
Thử nghiệm trên Win10 64-bit, Python 3.5. Dường như cũng hoạt động với các ký tự không phải ASCII. Ký tự được kiểm tra bao gồm ± ° ©© αβγθΔΨΦåäö
- 1. Làm cách nào để đọc jpg hoặc png từ khay nhớ tạm của windows trong python và ngược lại?
- 2. Python - nhận văn bản từ cửa sổ
- 3. Làm cách nào để sao chép/dán từ khay nhớ tạm trong C++?
- 4. Cách lấy văn bản đã chọn từ cửa sổ đang hoạt động
- 5. Làm cách nào để sao chép hình ảnh và văn bản vào khay nhớ tạm làm một đối tượng?
- 6. Lưu trữ một tệp trong khay nhớ tạm trong python
- 7. Làm cách nào để sao chép từ tệp html sang khay nhớ tạm bằng Python trong văn bản được định dạng?
- 8. Python nhận nội dung trong khay nhớ tạm thời
- 9. cửa sổ lệnh để cắt cột từ một văn bản
- 10. Vim trong OSX: Cách dán văn bản từ cửa sổ đang mở vào tệp mở trong vim?
- 11. làm thế nào để chèn văn bản unicode để SQL Server từ cửa sổ truy vấn
- 12. Mở cửa sổ từ biểu tượng Khay hệ thống
- 13. Ngăn Vim khỏi xóa khay nhớ tạm khi thoát
- 14. Đọc từ trường văn bản trong cửa sổ ứng dụng khác
- 15. Có cách nào để trực tiếp gửi đầu ra python vào khay nhớ tạm không?
- 16. Lấy nội dung từ khay nhớ tạm của khách hàng như trang web này
- 17. Làm cách nào để sao lưu và khôi phục khay nhớ tạm của hệ thống trong C#?
- 18. Làm cách nào để dán hình ảnh trong suốt từ khay nhớ tạm vào ứng dụng C# winforms?
- 19. Lỗi - Mở khay nhớ tạm không thành công
- 20. Android: Sao chép văn bản vào khay nhớ tạm cho API <11
- 21. Đọc văn bản từ InputStream
- 22. Đọc văn bản từ một hình ảnh
- 23. Có cách nào để sao chép từ khay nhớ tạm trong android vào thiết bị đầu cuối không?
- 24. Làm cách nào để tạo tệp tạm thời có tên trên các cửa sổ bằng Python?
- 25. Làm thế nào để đọc ra các văn bản từ QLineEdit trong python?
- 26. Làm cách nào để mở cửa sổ thứ hai từ cửa sổ đầu tiên trong wpf?
- 27. Bảo quản khay nhớ tạm trên tải VSTO
- 28. Tôi có thể lấy dữ liệu từ khay nhớ tạm bằng ZeroClipboard mới không?
- 29. Chỉ nhận được văn bản có thể đọc được từ clipboard
- 30. Đọc nội dung văn bản từ SyndicationContent
Liên quan đến [câu hỏi này] (http://stackoverflow.com/q/579687/296974). – glglgl
trong trường hợp của tôi, chỉ câu trả lời [dan] (http://stackoverflow.com/users/2084578/dan) hoạt động, sử dụng [clipboard] (https://pypi.python.org/pypi/clipboard/0.0.4) gói. – Soorena