Python 如何获取剪贴板中的文件名?

我复制了一个文件, 我想获取这个文件的名字和绝对路径,这个东西怎么操作?

我参考了这个链接, 但是好像没有我需要的。

http://pyqt.sourceforge.net/Docs/PyQt4/qclipboard.html#image


Python 如何获取剪贴板中的文件名?
9 回复

不调用第三方库的情况下,得根据不同的系统来调用系统 API 获取。
不过应该有现成的第三方库,搜索看看吧。


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

工作原理:

  1. 使用win32clipboard访问Windows剪贴板
  2. 优先检查CF_HDROP格式(文件拖放的标准格式)
  3. 备选检查CF_TEXT格式中的文本路径
  4. 返回清理后的文件路径列表

注意: 这个方法只适用于Windows系统。如果是macOS或Linux,需要使用对应的剪贴板库(如pyperclip配合系统命令)。

一句话建议:用pywin32处理Windows剪贴板的文件操作最直接。

Linux 还是什么?

这个楼主解决了吗

mac 的话可以用 pbpaste 命令

十分感谢~正好我也需要这样的功能呢~

回到顶部