使用单个Python脚本从Linux,Mac和Windows上的剪贴板复制数据


问题内容

我正在尝试用Python创建一个脚本,该脚本将收集用户放置在剪贴板中的数据,最好将其另存为列表或文本文件或字符串/数组/变量,以便以后使用。

这应该适用于Linux所有版本(我假设是Ubuntu),Mac
OS所有版本和Windows所有版本。我不确定32位和64位系统是否有不同的方式访问剪贴板中的数据,如果确实如此,那么仅对32位版本进行这项工作是安全的,因此运行64位版本的用户可以使用32位版本版本的操作系统。

除了必须在提到的OS上工作之外,棘手的部分是我希望脚本能够在用户不停止的情况下运行,并且在运行该脚本时,将复制用户复制到剪贴板的所有数据到列表或文本文件或字符串/数组/变量中。

当然,用户可以将数据输入剪贴板有一定的时间限制,因此我想到了每秒或每500毫秒循环扫描剪贴板,检查内容是否已更改以及是否已复制,否则请勿复制。

是否有一个统一的方式或模块可以在所有不同的操作系统上执行此操作,或者为不同的操作系统为此任务编写单独的脚本会更好吗?

事实是,这是一个更大的项目的一部分,我想在Linux,Mac和Windows上进行工作,因此覆盖了这三个选项,然后使用可在上述OS上使用的Python代码作为其余脚本/
project将是理想的。我是否对该脚本要求在Linux,Mac和Windows上正常工作的要求过高?


问题答案:

您可以使用Qt之类的GUI工具包来获取便携式剪贴板API。也就是说,仅使用整个GUI工具包可能有点过大。(当然,除非您还将使用它来制作GUI。)

就是说,处理纯文本的剪贴板API应该相当简单,以使您自己具有抽象性。

例如,在OS X上,您可以使用PyObjC(与OS
X一起安装)来获取剪贴板的纯文本内容:

from AppKit import NSPasteboard
from LaunchServices import 
pb = NSPasteboard.generalPasteboard()
text = pb.stringForType_(kUTTypeUTF8PlainText)

CPU架构

64位操作系统上的32位本机应用程序将访问与64位操作系统相同的剪贴板。如果您需要同时支持两种操作系统的体系结构,而无需编写驱动程序,那么对于Windows来说,可以运送32位二进制文​​件;对于Linux,您可能必须同时使用两个版本。对于OS
X,发布64位版本应该是相当安全的,自2007年中以来,所有Mac都具有64位CPU,并且从Leopard开始就提供OS支持。在Linux上,Python脚本可能由分发程序包管理器中的Python安装执行,其位数将与系统匹配,因此您不必担心。