我试图在python脚本中自动将变量的内容复制到剪贴板。因此,创建了一个包含字符串的变量,我想将该字符串复制到剪贴板。
有没有办法用Pyclips或
来做到这一点os.system("echo '' | pbcopy")
我已经尝试将变量传递给字符串应该去的地方,但这对我来说没有用。
答案 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还可以选择写信给:
主要选择(默认)
辅助选择(-s
选项)或
剪贴板(-b
选项)。
如果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。