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
yprint()
- "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 )
Pyperclip parece estar a la altura de la tarea.