首页 > 解决方案 > 在python中将文件存储在剪贴板中(跨平台)

问题描述

我正在尝试将文件存储在 windows mac 和 linux 的剪贴板中。例如:运行脚本会将文件/文件放在剪贴板中,现在我可以 ctrl+v 粘贴文件的任何位置。

对于 Windows,我用 C# 编写了这段代码:

using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Collections.Specialized;

namespace file2clip
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            StringCollection paths = new StringCollection();
            foreach (string s in args) paths.Add(s);
            Clipboard.SetFileDropList(paths);
        }
    }
}

然后在python中实现:

import subprocess

def files_to_win_clip(files: tuple):
    subprocess.call(f'file2clip.exe {files}')

对于 linux,我发现 xclip 允许复制和粘贴文件,但它不会转到默认剪贴板,所以我无法在任何地方粘贴(使用 ctrl+v)文件。

我可能需要一些关于如何使它在 linux 和 mac 上工作的帮助。

标签: pythonfileclipboard

解决方案


有很多 python 模块可以做到这一点。其中之一是https://pypi.org/project/pyperclip/

不需要这种方式的c程序,您可以将python中的文件作为文本读取或执行所有您想要的逻辑并将其放入剪贴板。

对于完整的文件副本,您可以使用此代码段:

from PyQt4 import QtCore, QtGui

app = QtGui.QApplication([])

data = QtCore.QMimeData()
url = QtCore.QUrl.fromLocalFile('c:\\foo.file')
data.setUrls([url])

app.clipboard().setMimeData(data)

推荐阅读