我希望我的Python程序可以将一些文本放入Mac系统的剪贴板中。
这个可能吗?
这个可能吗?
如何将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
一个简单的方法:
cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
一种跨平台的方法:
https://dev59.com/-XRB5IYBdhLWcg3wl4EQ#4203897
from Tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.destroy()
r.update()
调用。 - GhostCatfrom AppKit import NSPasteboard, NSArray
pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)
如Cocoa文档中所述, 复制需要三个步骤:
您可以使用对象数组(这里的a
仅包含一个字符串)来填充剪贴板。
新回答:
此页面建议:
适用于所有Mac OS X版本的实现
另一个Mac模块(List 4中的MacSharedClipboard.py)在两个命令行程序(称为pbcopy和pbpaste)之上实现了剪贴板接口,其中pbcopy将文本复制到剪贴板中,而pbpaste则粘贴剪贴板中的任何文本。前缀“pb”代表“pasteboard”,这是Mac术语,表示剪贴板。
旧回答:
显然是这样:
http://code.activestate.com/recipes/410615/是一个演示如何做到这一点的简单脚本。
编辑:刚才意识到这依赖于Carbon,因此可能不是理想的...有点取决于您要用它做什么。
import clipboard
# copy some text to the clipboard
clipboard.copy('blah blah blah')
# get the text currently held in the clipboard
text = clipboard.paste()
一旦你执行了 clipboard.copy('foo')
,你只需要使用 cmd + v 即可获取文本。
json.dumps(data)
并复制到VS Code中,使JSON更美观。所以下面的脚本对我的工作非常有帮助。alias pyjson_decode_stdout='python3 -c "import sys, json, subprocess; \
print(json.dumps(eval(subprocess.check_output( \
\"pbpaste\", env={\"LANG\": \"en_US.UTF-8\"}).decode(\"utf-8\"))))"'
alias pyjson_decode='python3 -c "import json, subprocess; \
output=json.dumps(eval(subprocess.check_output(\
\"pbpaste\", env={\"LANG\": \"en_US.UTF-8\"}).decode(\"utf-8\"))).encode(\"utf-8\"); \
process=subprocess.Popen(\"pbcopy\", env={\"LANG\": \"en_US.UTF-8\"}, stdin=subprocess.PIPE); \
process.communicate(output)"'
~/.zshrc
或~/.bashrc
(根据您使用的sh
),然后打开一个新的终端窗口,示例用法是复制一个字典数据,例如{'a': 1}
,然后输入pyjson_decode_stdout
将基于此字典打印解析的JSON;复制并输入pyjson_decode
将把此字符串写入pbcopy
。