在日常工作中,我们经常需要跟踪和记录从不同来源复制到剪贴板的信息。通过编写一个简单的Python脚本,我们可以实现实时监听系统剪贴板的变化,并在检测到新内容时将其自动保存到文件中。这不仅提高了工作效率,还可以作为数据收集的小工具。本文将详细介绍如何实现这一功能。

准备工作

首先,你需要确保Python环境已经安装了pywin32库,这个库提供了访问Windows API的功能,特别是处理剪贴板操作。你可以使用以下命令来安装它:

pip install pywin32

核心代码解析

导入必要的模块

我们需要导入win32clipboard来获取剪贴板的内容,以及time来控制循环的间隔时间。

获取剪贴板内容

定义一个名为get_clipboard_data()的函数,用于尝试打开剪贴板并读取文本内容。如果剪贴板中的数据不是文本格式,则返回提示信息。

def get_clipboard_data():
    """获取剪贴板内容"""
    try:
        win32clipboard.OpenClipboard()
        data = win32clipboard.GetClipboardData()
    except TypeError:
        data = "非文本数据"
    finally:
        win32clipboard.CloseClipboard()
    return data

保存内容到文件

定义一个名为save_to_file(content)的函数,接收一段文本作为参数,并将其追加写入到名为clipboard_log.txt的文件中,同时记录时间戳。

def save_to_file(content):
    """将内容保存到文件"""
    with open("clipboard_log.txt", "a", encoding='utf-8') as f:
        timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        f.write(f"[{timestamp}] {content}\n")

监听剪贴板变化

定义一个名为monitor_clipboard()的无限循环,定期检查剪贴板内容的变化。一旦发现新的内容,就调用保存函数进行记录。

def monitor_clipboard():
    """监听剪贴板变化"""
    last_data = ""
    while True:
        current_data = get_clipboard_data()
        if current_data != last_data:
            last_data = current_data
            save_to_file(current_data)
        time.sleep(1)  # 每隔一秒检查一次

运行程序

最后,在主程序中启动监听器:

if __name__ == "__main__":
    print("开始监听剪贴板...")
    monitor_clipboard()

这样,你就拥有了一款可以实时监听Windows 10剪贴板内容并自动保存到本地文件的小工具。根据个人需求,你可以进一步扩展其功能,比如添加过滤条件、支持更多类型的数据等。希望这篇指南对你有所帮助!