[英]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
选择。 我不知道这是否已经被使用了。 -b
与CLIPBOARD
选择一起使用。 这是你的Ctrl + V
之一。 我创建一个快速而脏的函数来处理这个:
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脚本的输出xclip
给xclip
命令。
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和电池”,因为它涉及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.