¿Cómo copio una cadena al portapapeles?

Resuelto tester asked hace 15 años • 30 respuestas

Estoy intentando crear una aplicación básica de Windows que cree una cadena a partir de la entrada del usuario y luego la agregue al portapapeles. ¿Cómo copio una cadena al portapapeles usando Python?

tester avatar Feb 24 '09 05:02 tester
Aceptado

En realidad, pywin32parece ctypesexcesivo para esta sencilla tarea. tkinteres un marco GUI multiplataforma, que viene con Python de forma predeterminada y tiene métodos de acceso al portapapeles junto con otras cosas interesantes.

Si todo lo que necesita es poner algo de texto en el portapapeles del sistema, esto lo hará:

from tkinter import Tk # in Python 2, use "Tkinter" instead 
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()

Y eso es todo, no es necesario perder el tiempo con bibliotecas de terceros específicas de la plataforma.

Si está utilizando Python 2, reemplácelo tkintercon Tkinter.

atomizer avatar Nov 17 '2010 11:11 atomizer

No tenía una solución, sólo una solución alternativa.

Windows Vista en adelante tiene un comando incorporado llamado clipque toma el resultado de un comando desde la línea de comando y lo coloca en el portapapeles. Por ejemplo, ipconfig | clip.

Entonces hice una función con el osmódulo que toma una cadena y la agrega al portapapeles usando la solución incorporada de Windows.

import os
def addToClipBoard(text):
    command = 'echo ' + text.strip() + '| clip'
    os.system(command)

# Example
addToClipBoard('penny lane')

# Penny Lane is now in your ears, eyes, and clipboard.

Sin embargo, como se señaló anteriormente en los comentarios, una desventaja de este enfoque es que el echocomando agrega automáticamente una nueva línea al final del texto. Para evitar esto, puedes utilizar una versión modificada del comando:

def addToClipBoard(text):
    command = 'echo | set /p nul=' + text.strip() + '| clip'
    os.system(command)

Si está utilizando Windows XP, funcionará simplemente siguiendo los pasos en Copiar y pegar desde el símbolo del sistema de Windows XP Pro directamente al Portapapeles .

user1227883 avatar Feb 23 '2012 09:02 user1227883

Puede utilizar pyperclip , módulo de portapapeles multiplataforma. O Xerox : módulo similar, excepto que requiere el módulo Python win32 para funcionar en Windows.

pongo avatar Jul 02 '2014 05:07 pongo

La forma más sencilla es con copyrclip . Funciona en Python 2 y 3.

Para instalar esta biblioteca, utilice:

pip install pyperclip

Uso de ejemplo:

import pyperclip

pyperclip.copy("your string")

Si desea obtener el contenido del portapapeles:

clipboard_content = pyperclip.paste()
maviz avatar Mar 08 '2017 12:03 maviz

Puedes usar el excelente pandas, que tiene soporte para portapapeles incorporado, pero necesitas pasar por un DataFrame.

import pandas as pd
df=pd.DataFrame(['Text to copy'])
df.to_clipboard(index=False,header=False)
Gadi Oron avatar Mar 23 '2016 12:03 Gadi Oron