Python能否将文本发送到Mac剪贴板

52 投票
7 回答
29286 浏览
提问于 2025-04-15 16:33

我想让我的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,所以可能不是最理想的选择……这要看你具体用它来做什么。

撰写回答