Is there a way to directly send a python output to clipboard? Is there a way to directly send a python output to clipboard? python python

Is there a way to directly send a python output to clipboard?


You can use an external program, xsel:

from subprocess import Popen, PIPEp = Popen(['xsel','-pi'], stdin=PIPE)p.communicate(input='Hello, World')

With xsel, you can set the clipboard you want to work on.

  • -p works with the PRIMARY selection. That's the middle click one.
  • -s works with the SECONDARY selection. I don't know if this is used anymore.
  • -b works with the CLIPBOARD selection. That's your Ctrl + V one.

Read more about X's clipboards here and here.

A quick and dirty function I created to handle this:

def paste(str, p=True, c=True):    from subprocess import Popen, PIPE    if p:        p = Popen(['xsel', '-pi'], stdin=PIPE)        p.communicate(input=str)    if c:        p = Popen(['xsel', '-bi'], stdin=PIPE)        p.communicate(input=str)paste('Hello', False)    # pastes to CLIPBOARD onlypaste('Hello', c=False)  # pastes to PRIMARY onlypaste('Hello')           # pastes to both

You can also try pyGTK's clipboard :

import pygtkpygtk.require('2.0')import gtkclipboard = gtk.clipboard_get()clipboard.set_text('Hello, World')clipboard.store()

This works with the Ctrl + V selection for me.


As it was posted in another answer, if you want to solve that within python, you can use Pyperclip which has the added benefit of being cross-platform.

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


This is not really a Python question but a shell question. You already can send the output of a Python script (or any command) to the clipboard instead of standard out, by piping the output of the Python script into the xclip command.

myscript.py | xclip

If xclip is not already installed on your system (it isn't by default), this is how you get it:

sudo apt-get install xclip

If you wanted to do it directly from your Python script I guess you could shell out and run the xclip command using os.system() which is simple but deprecated. There are a number of ways to do this (see the subprocess module for the current official way). The command you'd want to execute is something like:

echo -n /path/goes/here | xclip

Bonus: Under Mac OS X, you can do the same thing by piping into pbcopy.