¿Cómo leo texto desde el portapapeles (windows) de python?¿Cómo leo el texto del portapapeles (windows) de python?
Respuesta
Puede utilizar el módulo llamado win32clipboard, que es parte de pywin32.
Aquí es un ejemplo que primero establece los datos del portapapeles y luego lo consigue:
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
un recordatorio importante de la documentación:
Cuando la ventana ha terminado de examinar o cambiar el portapapeles, cierra el portapapeles llamando a CloseClipboard. Esto permite que otras ventanas accedan al portapapeles. No coloque un objeto en el portapapeles después de llamar a CloseClipboard.
¿Sabes si hay una forma de usar la instrucción 'with '? – Norfeldt
Merece la pena señalar, en py34, win7, SetClipboardText no funcionó sin una llamada anterior a EmptyClipboard – CoderTao
Este módulo es útil si desea realizar operaciones más complejas, p. obtener el contenido con formato HTML fuera del portapapeles. Consulte http://stackoverflow.com/questions/17298897/how-can-i-copy-from-an-html-file-to-the-clipboard-in-python-in-formatted-text –
Pruebe win32clipboard del paquete win32all (que probablemente esté instalado si está en ActiveState Python).
ver ejemplo aquí: http://code.activestate.com/recipes/474121/
he visto muchas sugerencias para utilizar el módulo Win32, pero Tkinter proporciona el método más fácil y más corto que he visto, como en este post: How do I copy a string to the clipboard on Windows using Python?
Plus, Tkinter está en la biblioteca estándar de Python .
Algún código que obtendrá el valor portapapeles través Tkinter: de Tkinter importación Tk [\ nl] r = Tk() [\ nl] resultado = r.selection_get (selección = "cLIPBOARD") [\ nl] r.destroy() – mgkrebbs
La respuesta más votada arriba es extraña de una manera que simplemente borra el Portapapeles y luego obtiene el contenido (que entonces está vacío). Se podría borrar el portapapeles para asegurarse de que cierto tipo de contenido del portapapeles, como "texto formateado", no "cubra" el contenido de texto sin formato que desea guardar en el portapapeles.
El siguiente fragmento de código sustituye a todos los saltos de línea en el portapapeles por espacios, a continuación, elimina todos los espacios dobles y finalmente guarda el contenido nuevamente en el portapapeles:
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()
Si no desea instalar paquetes adicionales , ctypes
puede hacer el trabajo también.
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()
fácilmente puede hacer esto a través del módulo integrado Tkinter que es básicamente una biblioteca de interfaz gráfica de usuario. Este código crea un widget en blanco para obtener el contenido del portapapeles del sistema operativo.
#from tkinter import Tk # Python 3
from Tkinter import Tk
Tk().clipboard_get()
favor agregar comentario a este código, y (posiblemente) enlaces a la documentación de revelant. –
@jb. hecho :) gracias por la nota – kmonsoor
Por mi programa de consola las respuestas con tkinter anterior hicieron el trabajo no es para mí porque el .destroy() siempre dio un error ,:
comandono puede invocar "evento" : la aplicación se ha destruido al ejecutar ...
o al utilizar .withdraw() la ventana de la consola no recuperó el foco.
Para resolver esto, también debe llamar .update() antes del .destroy().Ejemplo:
# Python 3
import tkinter
r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()
El r.withdraw() impide que el marco de muestra para un milisegundo, y luego será destruida dando el foco de nuevo a la consola.
Use pitones biblioteca Clipboard
Su simplemente utilizados como esto:
import clipboard
clipboard.copy("this text is now in the clipboard")
print clipboard.paste()
descubrí esta era la forma más fácil de obtener acceso al portapapeles de pitón:
1) Instalar pyperclip : pip install pyperclip
2) Uso:
import pyperclip
s = pyperclip.paste()
pyperclip.copy(s)
# the type of s is string
Probado en Win10 de 64 bits, Python 3.5. Parece que también funciona con caracteres que no son ASCII. Los caracteres probados incluyen ± ° ©© αβγθΔΨΦåäö
- 1. ¿Cómo leo un jpg o png desde el portapapeles de Windows en python y viceversa?
- 2. Mostrar el contenido del portapapeles de Windows
- 3. X11 Obtener texto del Portapapeles
- 4. ¿Cómo conservar el contenido del portapapeles en Emacs en Windows?
- 5. ¿Cómo funciona el portapapeles en Windows?
- 6. Establecer texto y obtener texto del portapapeles
- 7. Copie el texto del área seleccionada en el portapapeles
- 8. Obtener texto legible solo del portapapeles
- 9. Copiar texto desde una ventana CMD de Windows al portapapeles
- 10. ¿Cómo leo las ilustraciones del álbum usando Python?
- 11. ¿Puede Python enviar texto al portapapeles de Mac?
- 12. ¿Escucha el cambio de contenido del portapapeles?
- 13. Obteniendo fuente HTML o texto enriquecido del portapapeles X
- 14. Portapapeles independiente del sistema operativo copiar/pegar texto en C
- 15. ¿Cómo coloco algún texto formateado en el Portapapeles?
- 16. Python get mac portapapeles contenido
- 17. Copia de texto al portapapeles utilizando Java
- 18. ¿Cómo leo el valor del Registro de Windows (Predeterminado) usando QSettings?
- 19. ¿Cómo controlo el contenido del portapapeles en C#?
- 20. ¿Cómo copiar texto en el portapapeles en Javascript?
- 21. Cambiar el color del texto del shell (Windows)
- 22. Obtener datos del portapapeles
- 23. ¿Cómo puede Python acceder al portapapeles X11?
- 24. Mecanismo del portapapeles de xwindow
- 25. ¿Cómo leo líneas en un archivo de texto en OCaml?
- 26. Pegar texto desde el portapapeles con el botón
- 27. ¿Cómo respaldo y restauro el portapapeles del sistema en C#?
- 28. Formato del Portapapeles de Office
- 29. ¿Cómo leo múltiples líneas de entrada sin formato en Python?
- 30. ¿Cómo aumentar el tamaño de la historia del portapapeles PHPStorm?
Relacionados con [esta pregunta] (http://stackoverflow.com/q/579687/296974). – glglgl
en mi caso, solo [dan] (http://stackoverflow.com/users/2084578/dan) respuesta funcionó, que usa [portapapeles] (https://pypi.python.org/pypi/clipboard/0.0.4) paquete. – Soorena