Python - 使用子进程获取和设置剪贴板数据
Python - Getting and setting clipboard data with subprocesses
我最近从 this post 那里发现了一种通过子进程在 python 中获取和设置剪贴板数据的方法,这正是我的项目所需要的。
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 X 操作系统。如何在 windows、mac 和 linux 中重新创建此功能?
更新
使用我的原始代码和bigbounty提供的windows解决方案,我想我现在只需要linux的解决方案。也许是利用 xclip 或 xsel 的东西?
对于windows,
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/
对于 Linux,您可以使用 xclip
实用程序而不是 pbpaste
/pbcopy
:
使用原始代码
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 Window有多个“clipboards”
-o
: 从想要的选择中读取
您应该注意到此解决方案在 binary data 上运行。要存储字符串,您可以使用:
setClipboardData('foo'.encode())
最后,如果您愿意在 shell 管道中使用您的程序,请查看我关于 .
的问题
我最近从 this post 那里发现了一种通过子进程在 python 中获取和设置剪贴板数据的方法,这正是我的项目所需要的。
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 X 操作系统。如何在 windows、mac 和 linux 中重新创建此功能?
更新
使用我的原始代码和bigbounty提供的windows解决方案,我想我现在只需要linux的解决方案。也许是利用 xclip 或 xsel 的东西?
对于windows,
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/
对于 Linux,您可以使用 xclip
实用程序而不是 pbpaste
/pbcopy
:
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 Window有多个“clipboards”-o
: 从想要的选择中读取
您应该注意到此解决方案在 binary data 上运行。要存储字符串,您可以使用:
setClipboardData('foo'.encode())
最后,如果您愿意在 shell 管道中使用您的程序,请查看我关于