python clipboard pyperclip

clipboard python



Script de Python para copiar texto al portapapeles (11)

Esta pregunta ya tiene una respuesta aquí:

Solo necesito una secuencia de comandos de python que copia el texto al portapapeles.

Después de que el script se ejecute, necesito que la salida del texto se pegue en otra fuente. ¿Es posible escribir un script de python que hace este trabajo?


En mac utilizo esta función.

import os data = "hello world" os.system("echo ''%s'' | pbcopy" % data)

Copiará "hola mundo" al portapapeles.


Esta es la única forma en la que me funcionó utilizando Python 3.5.2 además de ser la más fácil de implementar con el uso de la suite PyData estándar PyData

Pregunte a https://.com/users/4502363/gadi-oron la respuesta (la copié por completo) desde ¿Cómo copio una cadena al portapapeles en Windows usando Python?

import pandas as pd df=pd.DataFrame([''Text to copy'']) df.to_clipboard(index=False,header=False)

Escribí un pequeño envoltorio para él que puse en mi perfil de ipython <3


Esta es una versión alterada de la respuesta de @Martin Thoma para GTK3 . Descubrí que la solución original dio como resultado que el proceso nunca terminara y mi terminal se colgó cuando llamé al script. Cambiar la secuencia de comandos a la siguiente resolvió el problema para mí.

#!/usr/bin/python3 from gi.repository import Gtk, Gdk import sys from time import sleep class Hello(Gtk.Window): def __init__(self): super(Hello, self).__init__() clipboardText = sys.argv[1] clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) clipboard.set_text(clipboardText, -1) clipboard.store() def main(): Hello() if __name__ == "__main__": main()

Es probable que desee cambiar a qué clipboardText se asigna, en este script se asigna al parámetro con el que se llama al script.

En una instalación nueva de ubuntu 16.04, encontré que tenía que instalar el paquete python-gobject para que funcionara sin un error de importación del módulo.


GTK3:

#!/usr/bin/python3 from gi.repository import Gtk, Gdk class Hello(Gtk.Window): def __init__(self): super(Hello, self).__init__() clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) clipboard.set_text("hello world", -1) Gtk.main_quit() def main(): Hello() Gtk.main() if __name__ == "__main__": main()


Intento este portapapeles 0.0.4 y funciona bien.

https://pypi.python.org/pypi/clipboard/0.0.4

import clipboard clipboard.copy("abc") # now the clipboard content will be string "abc" text = clipboard.paste() # text will have the content of clipboard


Para usar directorios nativos de Python, use:

import subprocess def copy2clip(txt): cmd=''echo ''+txt.strip()+''|clip'' return subprocess.check_call(cmd, shell=True)

Luego use:

copy2clip(''This is on my clipboard!'')

para llamar a la función.


PyQt5:

from PyQt5.QtWidgets import QApplication from PyQt5 import QtGui from PyQt5.QtGui import QClipboard import sys def main(): app=QApplication(sys.argv) cb = QApplication.clipboard() cb.clear(mode=cb.Clipboard ) cb.setText("Copy to ClipBoard", mode=cb.Clipboard) sys.exit(app.exec_()) if __name__ == "__main__": main()


Una respuesta más para mejorar: https://.com/a/4203897/2804197 y https://.com/a/25476462/1338797 (Tkinter).

Tkinter es agradable, ya que se incluye con Python (Windows) o es fácil de instalar (Linux) y, por lo tanto, requiere pocas dependencias para el usuario final.

Aquí tengo un ejemplo "en toda regla", que copia los argumentos o la entrada estándar, al portapapeles, y - cuando no está en Windows - espera que el usuario cierre la aplicación:

import sys try: from Tkinter import Tk except ImportError: # welcome to Python3 from tkinter import Tk raw_input = input r = Tk() r.withdraw() r.clipboard_clear() if len(sys.argv) < 2: data = sys.stdin.read() else: data = '' ''.join(sys.argv[1:]) r.clipboard_append(data) if sys.platform != ''win32'': if len(sys.argv) > 1: raw_input(''Data was copied into clipboard. Paste and press ENTER to exit...'') else: # stdin already read; use GUI to exit print(''Data was copied into clipboard. Paste, then close popup to exit...'') r.deiconify() r.mainloop() else: r.destroy()

Esto muestra:

  • importando Tk a través de Py2 y Py3
  • raw_input y print()
  • "Invisible" ventana de raíz Tk cuando sea necesario
  • esperando la salida en Linux de dos maneras diferentes.

Utilice Tkinter:

https://.com/a/4203897/2804197

try: from Tkinter import Tk except ImportError: from tkinter import Tk r = Tk() r.withdraw() r.clipboard_clear() r.clipboard_append(''i can has clipboardz?'') r.update() # now it stays on the clipboard after the window is closed r.destroy()

(Autor original: https://.com/users/449571/atomizer )


Ver Pyperclip . Ejemplo (tomado del sitio de Pyperclip):

import pyperclip pyperclip.copy(''The text to be copied to the clipboard.'') spam = pyperclip.paste()

También, ver Xerox . Pero parece tener más dependencias.


Pyperclip parece estar a la altura de la tarea.