Linux下如何用Python读取xdotool按ctrl+c复制的剪贴板内容并存入列表
解决方案
Linux X11环境下无需安装Python第三方剪贴板模块,直接调用系统自带的xclip工具即可读取剪贴板内容,配合Python标准库subprocess就能实现需求,完整实现逻辑如下:
- 原有发送
ctrl+c的代码后增加微小延时,确保系统完成复制操作,避免读取到旧的剪贴板数据 - 调用
subprocess.run执行xclip命令读取剪贴板内容 - 清洗读取结果后存入列表,同时打印输出
完整代码示例
import time import subprocess from xdo import Xdo def getclip(self): xdo = Xdo() key = "ctrl+c" xdo.send_keysequence_window(0, key.encode()) # 等待复制操作完成,可根据实际情况调整延时时长 time.sleep(0.1) # 调用xclip读取剪贴板内容,对应ctrl+c复制的选区 proc = subprocess.run( ["xclip", "-selection", "clipboard", "-o"], capture_output=True, text=True, check=False ) # 去除内容首尾的换行、空白字符 copied_url = proc.stdout.strip() # 存入Python列表,如需累计存储多个URL可将列表定义在函数外部使用append方法 url_list = [copied_url] # 控制台打印读取到的内容 print(f"复制的URL为:{copied_url}") return url_list
注意事项
- 若系统未预装
xclip,可通过对应发行版的包管理器安装:- Debian/Ubuntu 系列:
sudo apt install xclip - RHEL/CentOS/Fedora 系列:
sudo dnf install xclip
- Debian/Ubuntu 系列:
- 若使用Wayland桌面环境,将xclip相关命令替换为
["wl-paste"]即可 - 若需要同时存储多次复制的URL,把列表初始化逻辑移到函数外部,每次调用函数时执行
url_list.append(copied_url)即可
内容的提问来源于stack exchange,提问作者qagourab
相关产品推荐
相关产品推荐

