【问题标题】:How to Copy a File to Clipboard in Python (Mac)如何在 Python (Mac) 中将文件复制到剪贴板
【发布时间】:2020-07-19 20:48:48
【问题描述】:

我正在尝试找出上述问题的答案 - 我已经尝试过 shutil,据我所知,它不起作用,因为我不想将文件复制到目标位置。

目前使用 Pyperclip 模块将文本发送到剪贴板,但这不适用于实际的本地文件。

我的最终目标是使用 python 代码将两个文件复制到剪贴板,然后将它们粘贴到电子邮件中。

【问题讨论】:

  • 编写电子邮件的 Python 代码是什么?
  • 我还没有用于撰写电子邮件的 python 代码 - 我仍在努力。该程序正在将文本(希望是文件)复制到剪贴板,然后我转到 Outlook 并将其粘贴到电子邮件中。
  • 打开文件,阅读,使用 Pyperclip 将内容放到剪贴板上?
  • 我建议您从头开始:从撰写电子邮件开始。您可以将mock/stub 用于实际文件内容,例如让“复制”文本始终为“hello world”。然后,您将使用文件路径 / 或文件内容 / 或您的电子邮件撰写代码所需的任何内容替换这个“hello world”。
  • 感谢 Jason 的回复,但它们是 .pdf 文件,我需要收件人能够自行下载并打印出来。

标签: python macos


【解决方案1】:

我不确定这是否可以解决粘贴到电子邮件中的问题,但我在寻找如何将内容复制到 macOS 中的剪贴板时遇到了这个问题,并且后来找到了适合我的解决方案。我想我会发布它,以防其他人在这篇文章中遇到类似的需求。

正如这个问题的 cmets 中提到的,我遇到了 Pyperclip。但是我不想要任何外部依赖项。因此,我对 Pyperclip 如何实现复制/粘贴进行了顶峰,它相对简单。请参阅 here

简而言之:

#!/usr/bin/env python3

import subprocess

# copy
def pbcopy(txt):
    task = subprocess.Popen(
        ['pbcopy'],
        stdin=subprocess.PIPE,
        close_fds=True
    )
    task.communicate(input=txt.encode('utf-8'))

# paste
def pbpaste():
    task = subprocess.Popen(
        ['pbpaste'],
        stdout=subprocess.PIPE,
        close_fds=True
    )
    stdout, stderr = task.communicate()
    return(stdout.decode('utf-8'))

希望这能解决@MSawers 的问题,如果没有,希望其他人会觉得这很有用。

【讨论】:

  • 现在才看到这个。非常感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 2017-05-12
  • 2017-10-14
相关资源
最近更新 更多