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

Python 将变量的内容复制到剪贴板,python,Python,我试图在python脚本中自动将变量的内容复制到剪贴板。因此,创建了一个保存字符串的变量,我想将该字符串复制到剪贴板 有没有办法用Pyclips或 os.system("echo '' | pbcopy") 我已经尝试将变量传递到字符串应该到达的位置,但这对我来说没有意义。您尝试过这个吗 import os def addToClipBoard(text): command = 'echo ' + text.strip() + '| clip' os.system(comman

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

有没有办法用Pyclips或

os.system("echo '' | pbcopy")
我已经尝试将变量传递到字符串应该到达的位置,但这对我来说没有意义。

您尝试过这个吗

import os
def addToClipBoard(text):
    command = 'echo ' + text.strip() + '| clip'
    os.system(command)
阅读更多解决方案

编辑:

你可以称之为:

addToClipBoard(your_variable)
对于X11(Unix/Linux):

您还可以选择写信给:

  • 主选择(默认)

  • 二次选择(
    -s
    选项),或

  • 剪贴板(
    -b
    选项)

  • 如果
    xsel
    不能像您预期的那样工作,可能是因为您使用了错误的选择/剪贴板

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

    改进 模块
    子流程
    提供了一种更安全的方法来执行相同的操作:

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

    接受的答案对我不起作用,因为输出中有引号、撇号和$$符号,它们被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)
    
    我根据答案改进了功能。此解决方案使用临时文件,而不是在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)
    
    def添加到剪贴板(文本):
    导入临时文件
    使用tempfile.NamedTemporaryFile(“w”)作为fp:
    fp.write(文本)
    fp.flush()
    command=“pbcopy<{}”。格式(fp.name)
    操作系统(命令)
    

    对于Windows,用
    clip
    替换
    pbcopy
    ;对于Linux,用
    xclip
    替换
    。让我给你推荐一下。可以在GitHub上找到完整的文档,但下面是一个示例:

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

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

    如果变量是字符串,则必须将其传递给函数:
    addToClipBoard(var)
    我必须将“| clip”更改为“| pbcopy”,否则它不会复制到剪贴板。这是一个错误,还是有原因?我不完全确定,但我认为这取决于你使用的操作系统。你在用Mac电脑吗?看这个:是的,我使用的是Mac。这是一个特定于操作系统的答案,而不是Python的答案。另外,看看
    子流程
    模块,这就是我最终使用管道的原因。我只能推荐使用-b for xsel也是一个好主意,因为它可以将
    变量
    放入您的剪贴板中..就像您通常在桌面和其他地方使用的那样。(我只发现Linux中有很多剪贴簿在读关于这个
    xsel
    及其表亲
    xclip
    @的文章,这是一个非常好的建议。我刚刚更新了答案,以显示
    子进程
    ,并提到了
    -b
    选项。这个答案对我也很有用,因为换行会引起问题。当你在做什么的时候,它会很有用。)试图复制的内容太大,无法从打印屏幕上抓取