将变量的内容复制到剪贴板

时间:2013-12-29 03:19:37

标签: python

我试图在python脚本中自动将变量的内容复制到剪贴板。因此,创建了一个包含字符串的变量,我想将该字符串复制到剪贴板。

有没有办法用Pyclips或

来做到这一点
os.system("echo '' | pbcopy")

我已经尝试将变量传递给字符串应该去的地方,但这对我来说没有用。

4 个答案:

答案 0 :(得分:9)

你试过这个吗?

import os
def addToClipBoard(text):
    command = 'echo ' + text.strip() + '| clip'
    os.system(command)

阅读更多解决方案here

修改

您可以将其命名为:

addToClipBoard(your_variable)

答案 1 :(得分:4)

由于你提到了PyCLIPS,听起来好像是第三方软件包。让我抛出pyperclip的推荐。完整的文档可以在GitHub上找到,但这是一个例子:

import pyperclip
variable = 'Some really "complex" string with\na bunch of stuff in it.'
pyperclip.copy(variable)

虽然os.system(...'| pbcopy')示例也很好,但它们可能会给您带来复杂字符串的麻烦,并且pyperclip提供了相同的API跨平台。

答案 2 :(得分:2)

对于X11(Unix / Linux):

os.system('echo "%s" | xsel -i' % variable)

xsel还可以选择写信给:

  1. 主要选择(默认)

  2. 辅助选择(-s选项)或

  3. 剪贴板(-b选项)。

  4. 如果xsel无法正常工作,可能是因为您使用了错误的选择/剪贴板。

    此外,使用-a选项,您可以附加到剪贴板而不是覆盖。使用-c,剪贴板将被清除。

    改进

    模块subprocess提供了一种更安全的方式来执行相同的操作:

    from subprocess import Popen, PIPE
    Popen(('xsel', '-i'), stdin=PIPE).communicate(variable)
    

答案 3 :(得分:2)

接受的答案对我不起作用,因为输出有引号,撇号和$$符号被shell解释和替换。

我根据答案改进了功能。此解决方案使用临时文件而不是回显shell中的字符串。

def add_to_clipboard(text):
    import tempfile
    with tempfile.NamedTemporaryFile("w") as fp:
        fp.write(text)
        fp.flush()
        command = "pbcopy < {}".format(fp.name)
        os.system(command)

pbcopy替换为clip for Windows或xclip for Linux。