Python 将变量的内容复制到剪贴板
我试图在python脚本中自动将变量的内容复制到剪贴板。因此,创建了一个保存字符串的变量,我想将该字符串复制到剪贴板 有没有办法用Pyclips或Python 将变量的内容复制到剪贴板,python,Python,我试图在python脚本中自动将变量的内容复制到剪贴板。因此,创建了一个保存字符串的变量,我想将该字符串复制到剪贴板 有没有办法用Pyclips或 os.system("echo '' | pbcopy") 我已经尝试将变量传递到字符串应该到达的位置,但这对我来说没有意义。您尝试过这个吗 import os def addToClipBoard(text): command = 'echo ' + text.strip() + '| clip' os.system(comman
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
选项。这个答案对我也很有用,因为换行会引起问题。当你在做什么的时候,它会很有用。)试图复制的内容太大,无法从打印屏幕上抓取