我正在尝试在Python中创建一个脚本,该脚本将收集用户放在剪贴板中的数据,最好将其保存为列表或文本文件或字符串/数组/变量以便以后使用。
这应该适用于Linux所有版本(我会假设Ubuntu),Mac OS所有版本和Windows所有版本。我不确定32位和64位系统是否有不同的方式来访问剪贴板上的数据,如果他们这样做我认为这对于32位版本的工作是安全的,因此运行64位版本的人可以回到32位操作系统的版本。
除了必须处理上述操作系统之外,棘手的部分是我希望脚本能够运行,只要用户不停止它并且它运行所有数据被用户复制到剪贴板中被复制到列表或文本文件或字符串/数组/变量。
当然有一个时间限制,用户可以将数据输入到剪贴板,所以我想每隔一秒或每500毫秒循环扫描剪贴板,检查内容是否已更改,如果有,复制它,否则不要复制它。
是否有统一的方法或模块在所有不同的操作系统上执行此操作,或者为各种操作系统的此任务编写单独的脚本会更好吗?
问题是,这是一个更大的项目的一部分,我想在Linux,Mac和Windows上工作,所以有这三个选项,然后使用可以在所提到的操作系统中使用的Python代码脚本/项目是理想的。我是否从这个脚本中得到了太多关于它必须在Linux,Mac和Windows上工作的问题?
答案 0 :(得分:4)
xerox库支持Linux,Mac OS X和Windows。
请注意,在短(<分钟)间隔内执行任何操作是一个非常糟糕的主意,因为这会使现代处理器正常唤醒。您可能希望使用相应的操作系统的API在剪贴板更改后注册回调。
答案 1 :(得分:4)
你可能最好使用比Tk更高级的gui工具包,但它在标准库中,所以它随处可用。
作为一个非常简单的例子:
import Tkinter
root = Tkinter.Tk()
root.withdraw() # Hide the main window (optional)
text_in_clipboard = root.clipboard_get()
print text_in_clipboard
答案 2 :(得分:2)
您可以使用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)
64位操作系统上的32位本机应用程序将访问与64位操作系统相同的剪贴板。如果您需要支持操作系统的两种体系结构,而不是编写驱动程序,那么对于Windows来说,可以运送32位二进制文件;对于Linux,你可能需要做两个版本;对于OS X来说,运送64位版本应该是相当安全的,自2007年中期以来所有的Mac都拥有64位CPU,并且自Leopard以来就支持操作系统。在Linux上,Python脚本可能由分发包管理器中的Python安装执行,其位数与系统匹配,因此您不必担心这一点。
答案 3 :(得分:2)
轮询不稳健/可靠。
您无法确定数据是否已更改(无论如何在Windows上),而无需将其粘贴到缓冲区中进行检查。这需要打开剪贴板。如果您循环执行此操作,则会与其他应用发生冲突。即用户将另一个项目复制到剪贴板上的应用程序。这将爆炸,并且#34;无法打开剪贴板&#34;或者&#34;内存不足&#34;错误。这种方法不能可靠/稳健地工作。您需要在各种平台中使用正确的剪贴板监视API。
答案 4 :(得分:0)
我怀疑也可以通过以下链接使用pythonnet + TextCopy库以平台中立的方式复制剪贴板:
https://stackoverflow.com/a/51912933/2338477
(在此处看到类似的问题:Quick and easy file dialog in Python?)
但是我自己还没有尝试过,可能还需要弄清楚您运行哪种命令以及从哪个控制台运行。让我知道是否有人会尝试,我将在这里更新更多详细信息。