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