代码之家  ›  专栏  ›  技术社区  ›  David Sykes

python可以将文本发送到mac剪贴板吗

  •  28
  • David Sykes  · 技术社区  · 15 年前

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

    这有可能吗?

    6 回复  |  直到 9 年前
        1
  •  7
  •   mavnn    15 年前

    新答案:

    This page 建议:

    所有Mac OS X的实现 版本

    另一个MAC模块 (清单4中的macsharedclipboard.py) 在上实现剪贴板接口 两个命令行程序的顶部 称为pbcopy(将文本复制到 剪贴板)和pbPaste(其中 粘贴 剪贴板)。前缀“pb”代表 “Pasteboard”,Mac术语 剪贴板。

    老回答:

    显然如此:

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

    是一个演示如何操作的简单脚本。

    编辑:刚刚意识到这依赖于碳,所以可能不是理想的…这取决于你用它做什么。

        2
  •  61
  •   David Foster Eryk Sun    10 年前

    如何将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。

        3
  •  14
  •   FabienAndre    14 年前

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

    from AppKit import NSPasteboard, NSArray
    
    pb = NSPasteboard.generalPasteboard()
    pb.clearContents()
    a = NSArray.arrayWithObject_("hello world")
    pb.writeObjects_(a)
    

    AS explained in Cocoa documentation ,复制需要三个步骤:

    • 拿到纸板
    • 清除它
    • 填满它

    用对象数组填充粘贴板(此处 a 只包含一个字符串)。

        4
  •  14
  •   Community CDub    7 年前

    一个简单的方法:

    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()
    
        5
  •  5
  •   AtomicBen    9 年前

    我知道这是一篇老文章,但我找到了一个很好的解决这个问题的方法。

    有一个图书馆叫 皮夹 ,可在 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()
    

    一旦你通过 clipboard.copy('foo') 你可以 CMD+V 获取文本

        6
  •  1
  •   jellyfishtree    13 年前

    如果您只想将文本放入mac剪贴板,可以使用shell的pbcopy命令。