将文件存储在 python 的剪贴板中(跨平台)
Store files in clipboard in python (cross-platform)
我正在尝试将文件存储在 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 上运行。
有很多 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)
我无法发表评论,但xclip
可以按如下方式使用:
$ xclip -selection clipboard [FILES]
这会将文件的文本复制到剪贴板;不过,我不确定这是否是您要寻找的行为。
我正在尝试将文件存储在 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 上运行。
有很多 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)
我无法发表评论,但xclip
可以按如下方式使用:
$ xclip -selection clipboard [FILES]
这会将文件的文本复制到剪贴板;不过,我不确定这是否是您要寻找的行为。