可以将python发送到Mac剪贴板

Dav*_*kes 30 python macos clipboard

我希望我的python程序在Mac剪贴板中放置一些文本.

这可能吗?

Dav*_*ter 67

如何将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'))
Run Code Online (Sandbox Code Playgroud)

如何从Mac剪贴板中读取Unicode字符串:

import subprocess

def read_from_clipboard():
    return subprocess.check_output(
        'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')
Run Code Online (Sandbox Code Playgroud)

适用于Python 2.7和Python 3.4.

  • 我不知道为什么这个人得到这么少的爱,这是迄今为止这个页面上最优雅,最可靠的方法 (2认同)

Fab*_*dre 16

以下代码使用PyObjC(http://pyobjc.sourceforge.net/)

from AppKit import NSPasteboard, NSArray

pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)
Run Code Online (Sandbox Code Playgroud)

Cocoa文档中所述,复制需要三个步骤:

  • 得到纸板
  • 清除它
  • 填充

用一个对象数组填充粘贴板(这里a只包含一个字符串).


use*_*627 16

一个简单的方法:

cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)
Run Code Online (Sandbox Code Playgroud)

跨平台方式: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()
Run Code Online (Sandbox Code Playgroud)

  • 这似乎不适用于我的OS X 10.8. (3认同)

mav*_*vnn 7

新答案:

本页建议:

适用于所有Mac OS X版本

另一个Mac模块(清单4中的MacSharedClipboard.py)在名为pbcopy(将文本复制到剪贴板)和pbpaste(粘贴剪贴板中的任何文本)的两个命令行程序之上实现剪贴板界面.前缀"pb"代表"粘贴板",即剪贴板的Mac术语.

老答案:

显然是这样的:

http://code.activestate.com/recipes/410615/

是一个简单的脚本,演示如何做到这一点.

编辑:刚刚意识到这依赖于Carbon,所以可能并不理想......取决于你使用它的一点点.


小智 5

我知道这是一篇较老的帖子,但我找到了一个非常优雅的解决方案.

有一个名为PyClip的库,可以在https://github.com/georgefs/pyclip-copycat找到.

语法非常简单(例如来自Github repo):

import clipboard

# copy some text to the clipboard
clipboard.copy('blah blah blah')

# get the text currently held in the clipboard
text = clipboard.paste()
Run Code Online (Sandbox Code Playgroud)

一旦你通过了,clipboard.copy('foo')你可以通过cmd + v来获取文本