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

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

回答:

您可以使用外部程序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于我的选择。

以上是 有没有一种方法可以直接将python输出发送到剪贴板? 的全部内容, 来源链接: utcz.com/qa/417629.html

回到顶部