Python能否将文本发送到Mac剪贴板
我想让我的Python程序把一些文字放到Mac的剪贴板里。
这样做可以吗?
7 个回答
22
一种简单的方法:
cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
一种跨平台的方法:
https://stackoverflow.com/a/4203897/805627
from Tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.destroy()
116
如何将Unicode字符串写入Mac剪贴板:
import subprocess
def write_to_clipboard(output):
process = subprocess.Popen(
'pbcopy', env={'LANG': 'en_US.UTF-8'}, stdin=subprocess.PIPE)
process.communicate(output.encode('utf-8'))
如何从Mac剪贴板读取Unicode字符串:
import subprocess
def read_from_clipboard():
return subprocess.check_output(
'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')
这个方法在Python 2.7和Python 3.4上都能用。
2021年更新:如果你想在其他操作系统上读取剪贴板,而不仅仅是Mac,并且可以接受添加一个外部库,pyperclip似乎也很好用。我在Mac上用Unicode文本测试过这个库:
python -m pip install pyperclip
python -c 'import pyperclip; pyperclip.copy("私はDavid!")' # copy
python -c 'import pyperclip; print(repr(pyperclip.paste()))' # paste
8
新回答:
这个页面提到:
适用于所有Mac OS X版本的实现
另一个Mac模块(MacSharedClipboard.py,在列表4中)是通过两个命令行程序来实现剪贴板功能的,这两个程序分别叫做pbcopy(用于将文本复制到剪贴板)和pbpaste(用于粘贴剪贴板中的文本)。这里的“pb”代表“pasteboard”,这是Mac对剪贴板的称呼。
旧回答:
显然是这样的:
http://code.activestate.com/recipes/410615/
这是一个简单的脚本,演示了如何做到这一点。
编辑:刚意识到这个依赖于Carbon,所以可能不是最理想的选择……这要看你具体用它来做什么。