Copiar cadena – Python

Ok, chicos, me imagino que esto es fácil pero parece que no encuentro la forma de copiar una cadena. Simplemente COPY al sistema como CTRL + C en un texto.

Básicamente quiero copiar una cadena para que pueda, por ejemplo, digamos, pegar (ctrl + v).

Lo siento por una pregunta tan trivial, jaja.

Esto depende mucho del sistema operativo. En Linux, debido al extraño modelo de selección de X, la forma más sencilla es usar popen('xsel -pi') y escribir el texto en ese canal.

Por ejemplo: (creo)

 def select_xsel(text): import subprocess xsel_proc = subprocess.Popen(['xsel', '-pi'], stdin=subprocess.PIPE) xsel_proc.communicate(some_text) 

Como se señaló en los comentarios, en una Mac, puede usar el comando /usr/bin/pbcopy , así:

 xsel_proc = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE) 

Si desea admitir diferentes sistemas operativos, puede combinar diferentes soluciones con os.name para determinar qué método usar:

 import os, subprocess def select_text(text): if os.name == "posix": # try Mac first try: xsel_proc = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE) except: # try Linux version xsel_proc = subprocess.Popen(['xsel', '-pi'], stdin=subprocess.PIPE) elif os.name == "nt": # Windows... 

Para Windows, utiliza win32clipboard . Necesitarás pywin32 .

Para GTK (al menos en GNU / Linux), puede usar pygtk .

EDITAR: Como mencionó (un poco tarde) que está usando wxPython, en realidad también tienen un módulo para esto, wx.Clipboard .

Para Windows, puede hacer esto y es mucho más fácil que crear un nuevo subproceso, etc.

Para una solución multiplataforma, necesitará usar un marco multiplataforma como wxPython o PyQt; ambos tienen soporte para leer y escribir en el portapapeles del sistema de una manera independiente de la plataforma.