首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -获取和设置带有子进程的剪贴板数据

Python -获取和设置带有子进程的剪贴板数据
EN

Stack Overflow用户
提问于 2017-05-09 02:48:20
回答 2查看 8.4K关注 0票数 11

最近,我从这个职位中发现了一种通过子流程获取和设置python中剪贴板数据的方法,这正是我的项目所需要的。

代码语言:javascript
复制
import subprocess

def getClipboardData():
    p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE)
    retcode = p.wait()
    data = p.stdout.read()
    return data

def setClipboardData(data):
    p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
    p.stdin.write(data)
    p.stdin.close()
    retcode = p.wait()

然而,它似乎只适用于OS操作系统。如何跨windows、mac和linux重新创建此功能?

更新

使用我的原始代码和windows解决方案的重要性,我想我现在只需要一个linux的解决方案。也许是利用xclip或xsel的东西?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-14 21:11:45

对于Linux,您可以使用原始代码使用xclip实用程序而不是pbpaste/pbcopy

代码语言:javascript
复制
import subprocess

def getClipboardData():
    p = subprocess.Popen(['xclip','-selection', 'clipboard', '-o'], stdout=subprocess.PIPE)
    retcode = p.wait()
    data = p.stdout.read()
    return data

def setClipboardData(data):
    p = subprocess.Popen(['xclip','-selection','clipboard'], stdin=subprocess.PIPE)
    p.stdin.write(data)
    p.stdin.close()
    retcode = p.wait()

xclip参数:

  • -selection clipboard:操作剪贴板选择(X窗口有多个"剪贴板“)
  • -o:从所需选择中读取

您应该注意到,该解决方案在二进制数据上运行。要存储字符串,可以使用:

代码语言:javascript
复制
setClipboardData('foo'.encode())

最后,如果您愿意在外壳管道中使用您的程序,请看我关于问题的问题。

票数 10
EN

Stack Overflow用户

发布于 2017-05-09 02:53:18

对于窗户,

代码语言:javascript
复制
import win32clipboard

# set clipboard data
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText('testing 123')
win32clipboard.CloseClipboard()

# get clipboard data
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
print data

跨所有平台的单个库- http://coffeeghost.net/2010/10/09/pyperclip-a-cross-platform-clipboard-module-for-python/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43860227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档