【问题标题】:Accessing file meta-data within Python/wxPython在 Python/wxPython 中访问文件元数据
【发布时间】:2011-06-22 00:29:52
【问题描述】:

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

我想在 Windows 7 上实现这一点。但我也希望能够在 OS X 和 Linux 上实现这一点。

我在 Python v2.7.1 文档中进行了谷歌搜索,但无济于事。我对 Windows 的方式有些陌生,所以如果有办法预测与文件关联的 BMP 或 ICO 文件 - 那么我可以走这条路......

任何示例代码都会受到赞赏。

【问题讨论】:

  • 你想知道它是什么当它被拖动时?我不相信你可以在任何地方做到这一点。我相信,您可以识别出某些东西正在被拖过去并获取其 MIME 类型的信息,但我不相信您可以获得实际数据(这将是一个很大的安全风险 - 拖动我的密码文件或一串密码到不同的文件夹或浏览器或其他东西,我碰巧在此期间移动了其他东西,它窃取了它?
  • 我不想在浏览器或其他安全沙箱中运行它。我很确定我可以编写一个桌面 python 应用程序来搜索密码文件并将它们通过电子邮件发送或 ftp 到某个远程服务器。所以,我看不出在应用程序窗口上拖动会产生更大的安全风险。我在这里错过了什么吗?
  • 安全风险同样大。安装轻微恶意软件几乎与访问轻微恶意网站一样容易。
  • @Chris:是的,我认识一些 IT 专家,他们认为唯一安全的计算机是断开所有网络并关闭电源的计算机。其他任何东西 == 巨大的安全风险。我认为它更像是一个连续体。而且,首先,我只是在整理一个原理证明演示 - 具有讽刺意味的是,其目的是将丢弃的文件发送到另一台机器。

标签: python windows filesystems icons wxpython


【解决方案1】:

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

【讨论】:

  • 没关系。我不需要通用的方式,而且我意识到某些操作系统甚至可能没有“文件图标”的概念。所以,我从你的回答中得到的是,我应该研究如何从 Windows 上的系统注册表中获取文件图标(.exe 和其他文件除外?) - 而且,如果我得到这个工作,那么我可以将注意力转向其他平台。谢谢!
【解决方案2】:

这个例子应该让你开始在 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

...至少我的系统上是这样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2011-12-28
    • 2017-12-31
    • 2011-12-29
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多