一尘不染

有没有一种方法可以直接将python输出发送到剪贴板?

linux

例如,如果python脚本将在运行脚本后吐出一个字符串,提供我要立即编辑的新编写文件的路径,那么将其直接发送到系统剪贴板而不是会很好STDOUT


阅读 488

收藏
2020-06-03

共1个答案

一尘不染

您可以使用外部程序xsel

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

使用xsel,您可以设置要使用的剪贴板。

  • -pPRIMARY选择一起使用。那是中键。
  • -sSECONDARY选择一起使用。我不知道是否再使用了。
  • -bCLIPBOARD选择一起使用。那是你的Ctrl + V

在这里这里阅读有关X剪贴板的更多信息。

我创建的一个快速而肮脏的函数来处理此问题:

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 only
paste('Hello', c=False)  # pastes to PRIMARY only
paste('Hello')           # pastes to both

您也可以尝试pyGTK的clipboard

import pygtk
pygtk.require('2.0')
import gtk

clipboard = gtk.clipboard_get()

clipboard.set_text('Hello, World')
clipboard.store()

这适用Ctrl + V于我的选择。

2020-06-03