在日常工作中,我们经常需要跟踪和记录从不同来源复制到剪贴板的信息。通过编写一个简单的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剪贴板内容并自动保存到本地文件的小工具。根据个人需求,你可以进一步扩展其功能,比如添加过滤条件、支持更多类型的数据等。希望这篇指南对你有所帮助!
 
                            