繁体   English   中英

有没有办法直接将python输出发送到剪贴板?

[英]Is there a way to directly send a python output to clipboard?

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

您可以使用外部程序xsel

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

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

  • -p适用于PRIMARY选择。 这是中间点击一个。
  • -s适用于SECONDARY选择。 我不知道这是否已经被使用了。
  • -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问题,而是一个shell问题。 您已经可以将Python脚本(或任何命令)的输出发送到剪贴板而不是标准输出,方法是将Python脚本的输出xclipxclip命令。

myscript.py | xclip

如果您的系统上尚未安装xclip (默认情况下不是这样),那么您就是这样做的:

sudo apt-get install xclip

如果您想直接从Python脚本中执行此操作,我猜您可以使用os.system()os.system()并运行xclip命令,这很简单但已弃用。 有很多方法可以做到这一点(参见当前官方方式的subprocess模块)。 您要执行的命令如下:

echo -n /path/goes/here | xclip

额外奖励:在Mac OS X下,您可以通过管道进入pbcopy来做同样的事情。

正如它在另一个答案中发布的那样,如果你想在python中解决这个问题,你可以使用Pyperclip ,它具有跨平台的额外好处。

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

正如其他人所指出的,这不是“Python和电池”,因为它涉及GUI操作。 所以它取决于平台。 如果你在Windows上,你可以使用win32 Python模块和Access win32剪贴板操作。 我的建议是拿起一个GUI工具包(用于QT的PyQT / PySide,用于GTK +的PyGTK或用于wxWidgets的wxPython)。 然后使用剪贴板操作。 如果你不需要工具包的重量级的东西,那么制作你的包装将在Windows上使用win32包和其他平台上可用的任何东西并相应切换!

对于wxPython,这里有一些有用的链接:

http://www.wxpython.org/docs/api/wx.Clipboard-class.html

http://wiki.wxpython.org/ClipBoard

http://www.python-forum.org/pythonforum/viewtopic.php?f=1&t=25549

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM