在Python/wxPython中访问文件元数据

在Python/wxPython中访问文件元数据,python,windows,filesystems,icons,wxpython,Python,Windows,Filesystems,Icons,Wxpython,我想编写一个实现wx.FileDropTarget的Python/wxPython应用程序。这部分很简单。我还想在将文件图标拖到应用程序窗口上时显示它,然后在应用程序窗口中显示一个带有文件图标(以及其他元数据,比如大小)的代理 我想在Windows7上实现这一点。但我对能够在OSX和Linux上实现这一点很感兴趣 我在谷歌上搜索了Python v2.7.1文档,但没有结果。我对Windows的方式有些陌生,所以如果有一种方法可以预测与文件相关联的BMP或ICO文件,那么我同意这样做 任何示例代码

我想编写一个实现wx.FileDropTarget的Python/wxPython应用程序。这部分很简单。我还想在将文件图标拖到应用程序窗口上时显示它,然后在应用程序窗口中显示一个带有文件图标(以及其他元数据,比如大小)的代理

我想在Windows7上实现这一点。但我对能够在OSX和Linux上实现这一点很感兴趣

我在谷歌上搜索了Python v2.7.1文档,但没有结果。我对Windows的方式有些陌生,所以如果有一种方法可以预测与文件相关联的BMP或ICO文件,那么我同意这样做


任何示例代码都是值得欣赏的。

我认为实现这一点的可移植方法不止一种。。。在windows平台上,文件类型关联的默认图标存储在系统注册表中(图标位于exe资源中的可执行文件除外),在linux平台上,它取决于桌面环境,每个图标都有自己的标准。。。因此,我认为没有“通用”的方法可以做到这一点。

这个示例应该可以让您开始在windows中查找文件图标:

from _winreg import *

extension = '.html'

reg = OpenKey(HKEY_CLASSES_ROOT, extension)
(value, vtype) = QueryValueEx(reg, None)
print "file type is:", value

reg = OpenKey(HKEY_CLASSES_ROOT, value + '\DefaultIcon')
(value, vtype) = QueryValueEx(reg, None)
print value, vtype
%ProgramFiles%\Internet Explorer\iexplore.exe,-17 2


…至少我的系统就是这样。

没关系。我不需要一个通用的方法,我意识到一些操作系统甚至可能没有“文件图标”的概念。所以,我从你的回答中得到的是,我应该研究如何在Windows上从系统注册表中获取文件图标(除了.exe和其他?)——并且,如果我能做到这一点,那么我可以将注意力转向其他平台。谢谢你想知道它被拖的时候是什么吗?我不相信你在任何地方都能做到。我相信,你可以意识到有什么东西被拖过来了,也可以得到它的MIME类型的信息,但我不相信你能得到实际的数据(这将是一个巨大的安全风险-将我的密码文件或密码字符串拖到不同的文件夹或浏览器或其他地方,同时我碰巧移动到了其他地方,它偷走了它?我不希望在浏览器或其他安全的沙箱中运行它。我非常确定我可以编写一个桌面python应用程序,它将search获取密码文件,并通过电子邮件或ftp将其发送到某个远程服务器。因此,我不认为在应用程序窗口上拖动会产生更大的安全风险。我是否遗漏了一些内容?这是一个同样大的安全风险。安装轻微恶意的软件几乎和访问轻微恶意的网站一样容易。@Chris:是的,我认识一些IT专家,他们认为唯一安全的计算机是一台断开所有网络连接并关闭电源的计算机。其他任何东西==巨大的安全风险。我认为它更像是一个连续统一体。而且,fwiw,我只是在做一个原理证明演示-讽刺的是,其目的是将丢弃的文件发送到另一台机器伊恩。