例如,如果一个python脚本会吐出一个字符串,给出一个新编写的文件的路径,我将在运行该脚本后立即编辑这个文件,将它直接发送到系统剪贴板会非常好比STDOUT
。有没有办法直接发送python输出到剪贴板?
回答
您可以使用外部程序,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 abovescript.py'后,我在终端中点击我的鼠标,但是没有'Hello,World'出现。 – nye17
@ nye17你在尝试哪种方法?它会给你什么错误? – NullUserException
第一个“剪贴板”一个,不起作用,但根本没有错误报告。 – nye17
这不是一个真正的Python问题,而是一个shell问题。通过将Python脚本的输出传送到xclip
命令中,您可以将Python脚本(或任何命令)的输出发送到剪贴板而不是标准输出。
myscript.py | xclip
如果xclip
尚未安装在系统上(它不是默认情况下),你这是怎么得到它:
sudo apt-get install xclip
如果你想直接从您的Python脚本做我想你可以掏腰包并使用os.system()
运行xclip命令,这很简单但不推荐使用。有许多方法可以做到这一点(请参阅subprocess
模块,了解当前的官方方式)。你要执行的命令是这样的:
echo -n /path/goes/here | xclip
奖励:在Mac OS X中,可以通过管道进入pbcopy
做同样的事情。
我更喜欢将脚本指定的字符串发送到剪贴板,而不是将所有输出传送到'xclip',因为最终输出和所需字符串不一定相同。但是你是对的,我可以使用'subprocess'将它发送到'xclip',尽管我宁愿稍微不那么“蛮力”的方式。 – nye17
在python中这样做更好 - 允许代码输出的不仅仅是文件名... – tobyodavies
添加一个命令行标志来抑制除了路径名之外的所有内容,或者可选地将其发送到标准错误(所以你可以将它连接到'xclip'而不会引起其他问题)。无论如何,你都需要一个命令行标志,因为你不想在没有被明确告知的情况下摧毁用户的剪贴板,为什么不让它更加unixy? – kindall
正如其他人指出,这不是“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
- 1. 有没有办法将多个命令输出复制到剪贴板?
- 2. 有没有办法将数据添加到剪贴板?
- 3. 有没有办法在java中获得WordprocessingML剪贴板内容?
- 4. Powershell输出到剪贴板没有拖尾换行符?
- 5. 有没有办法将HighCharts工具提示的内容复制到剪贴板?
- 6. Quickbase - 有没有办法将结果从一个字段复制到剪贴板?
- 7. 复制到剪贴板没有Flash
- 8. 复制到没有System.Windows.Forms.Clipboard的剪贴板?
- 9. C#剪贴板直接复制粘贴
- 10. shell脚本输出到剪贴板
- 11. 有没有办法让Excel VBA发送数据到套接字?
- 12. 有没有办法将厨师退出代码发送到shell
- 13. vscode:有没有办法将密钥发送到任务输出控制台
- 14. 剪贴板查看器没有得到粘贴通知
- 15. 有没有办法直接在Python中访问硬件?
- 16. 有没有办法启动发送直接消息的Twitter对话框?
- 17. 有没有办法将数据发送到推送器channel_auth_endpoint?
- 18. 有没有办法将vim命令的输出粘贴到缓冲区中?
- 19. 有没有办法直接打开OpenFeint仪表板到“挑战”屏幕?
- 20. iPhone有剪贴板API吗?
- 21. 有没有办法改变由django发送的password_reset_confirm链接?
- 22. 有没有办法在动态改变剪贴板的内容的同时复制和粘贴Java端?
- 23. 有没有办法允许使用Shift-Insert在CTRL-V之上粘贴剪贴板?
- 24. 有没有办法仅从python列表中输出数字?
- 25. 有没有办法抑制Python M2Crypto的RSA.gen_key输出?
- 26. 有没有办法在Python或Java中输出关键字?
- 27. Python套接字没有收到没有发送
- 28. 有没有办法直接导出(比如从NSAttributedString表示)到iWork Pages格式?
- 29. 有没有办法使用Capybara发送按键到Webkit?
- 30. 有没有办法将数据从InfluxDB发送到Kafka?
该解决方案将取决于操作系统,是否没问题? – NullUserException
@NullUserExceptionఠ_ఠ我假设它会,但我完全在Linux内部工作,所以我想要一个针对Linux的解决方案。 – nye17