我正在尝试在Python脚本中自动将变量的内容复制到剪贴板。因此,创建一个包含字符串的变量,并希望将该字符串复制到剪贴板。
是否可以使用Pyclips或其他方法实现这一点?
os.system("echo '' | pbcopy")
我尝试将变量传递到应该放入字符串的位置,但这并不起作用,这对我来说很合理。
我正在尝试在Python脚本中自动将变量的内容复制到剪贴板。因此,创建一个包含字符串的变量,并希望将该字符串复制到剪贴板。
是否可以使用Pyclips或其他方法实现这一点?
os.system("echo '' | pbcopy")
我尝试将变量传递到应该放入字符串的位置,但这并不起作用,这对我来说很合理。
你试过这个吗?
import os
def addToClipBoard(text):
command = 'echo ' + text.strip() + '| clip'
os.system(command)
在这里阅读更多解决方案:链接
编辑:
你可以这样调用它:
addToClipBoard(your_variable)
既然你提到了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。
对我来说,所接受的答案不起作用,因为输出中有引号、撇号和$$符号,这些符号被解释并被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
替换为Windows的clip
或Linux的xclip
。
command = "xclip -sel clip {}".format(fp.name)
对我有效。 - Michael Hall对于 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)
subprocess
模块,这是我最终使用管道工作的方法。我只能推荐https://dev59.com/4HA75IYBdhLWcg3wDUYo#23796709,并且对于xsel来说使用-b也是一个好主意,因为它可以将"变量"放入你的剪贴板中,就像在桌面和其他地方通常使用的那样。(我只发现在Linux中有很多剪贴板,关于这个'xsel'和它的表亲'xclip')。 - Hugesubprocess
,并提到了 -b
选项。 - John1024
addToClipBoard(var)
。 - Christian Tapiaimport os; def addToClipBoard(text): command = 'echo ' + text.strip() + '| clip'; os.system(command)
- undefined