import win32clipboard
import win32con
def get_clipboard_filenames():
"""
获取剪贴板中的文件路径列表
返回: 文件路径字符串列表,剪贴板无文件时返回空列表
"""
try:
win32clipboard.OpenClipboard()
# 尝试获取HDROP格式(文件拖放操作)
if win32clipboard.IsClipboardFormatAvailable(win32con.CF_HDROP):
data = win32clipboard.GetClipboardData(win32con.CF_HDROP)
if data:
return list(data)
# 尝试获取文件列表格式
elif win32clipboard.IsClipboardFormatAvailable(win32con.CF_TEXT):
data = win32clipboard.GetClipboardData(win32con.CF_TEXT)
if data and isinstance(data, str):
# 简单处理文本中的文件路径(每行一个)
return [line.strip() for line in data.split('\n') if line.strip()]
return []
finally:
win32clipboard.CloseClipboard()
# 使用示例
if __name__ == "__main__":
files = get_clipboard_filenames()
if files:
print("剪贴板中的文件:")
for i, f in enumerate(files, 1):
print(f"{i}. {f}")
else:
print("剪贴板中没有文件")
需要安装的库:
pip install pywin32
工作原理:
- 使用
win32clipboard访问Windows剪贴板
- 优先检查
CF_HDROP格式(文件拖放的标准格式)
- 备选检查
CF_TEXT格式中的文本路径
- 返回清理后的文件路径列表
注意: 这个方法只适用于Windows系统。如果是macOS或Linux,需要使用对应的剪贴板库(如pyperclip配合系统命令)。
一句话建议:用pywin32处理Windows剪贴板的文件操作最直接。