【问题标题】:how can I copy a string to the windows clipboard? python 3 [duplicate]如何将字符串复制到 Windows 剪贴板? python 3 [重复]
【发布时间】:2013-12-13 18:59:11
【问题描述】:

如果我有一个变量 var = '这是一个变量'

如何将此字符串复制到 Windows 剪贴板,以便我可以简单地 Ctrl+v 并将其转移到其他地方?我不想使用任何非内置的东西,我希望这是可能的。

谢谢!

【问题讨论】:

  • 使用clip cmd 实用程序。将其输入复制到剪贴板

标签: python-3.x copy clipboard pyperclip


【解决方案1】:

你可以这样做:

>>> import subprocess
>>> def copy2clip(txt):
...    cmd='echo '+txt.strip()+'|clip'
...    return subprocess.check_call(cmd, shell=True)
...
>>> copy2clip('now this is on my clipboard')

【讨论】:

  • 请问,为什么投反对票?
  • 大概是因为这样复制shell代码的危险。我想知道x && rm -rf / 传递给你的函数时会做什么。
  • @CeesTimmerman:按照这种推理,人们永远不会对任何事情使用子进程调用。如果程序保持对所调用内容的控制,则使用子进程是完全安全的。实际上,您甚至不需要调用 subprocess 来擦除磁盘。 shutil.rmtree() 会这样做,或者os.remove() 会做得很好。我认为您将获取用户字符串或使用任意字符串并使用 those 执行代码与仅使用程序内部构造的字符串调用 shell 调用混为一谈。
  • copy2clip 应该这样做,而不是在用户尝试复制危险命令时擦除我的磁盘。否则将其命名为copy2clip_unless_its_a_shell_script。我刚刚尝试复制|dir 并得到了一个不错的目录列表。 hello\nworld 也失败了。
  • so本质上是不安全的。
【解决方案2】:

Pyperclip 提供跨平台解决方案。

关于此模块的一个注意事项:它将字符串编码为 ASCII,因此在通过 Pyperclip 运行它之前,您需要对字符串执行一些编码/解码工作以匹配它。

例子:

import pyperclip

#Usual Pyperclip usage:
string = "This is a sample string."
pyperclip.copy(string)
spam = pyperclip.paste()

#Example of decoding prior to running Pyperclip:
strings = open("textfile.txt", "rb")
strings = strings.decode("ascii", "ignore")
pyperclip.copy(strings)
spam = pyperclip.paste()

可能是一个明显的提示,但我遇到了麻烦,直到我查看了 Pyperclip 的代码。

【讨论】:

  • Pyperclip 现在在 Windows 上支持 Unicode。
猜你喜欢
  • 1970-01-01
  • 2013-11-21
  • 2010-10-09
  • 2022-09-27
  • 2010-11-18
  • 2019-11-18
  • 1970-01-01
  • 2013-07-01
  • 2018-10-12
相关资源
最近更新 更多