在Ubuntu中使用Python获取文件的元数据列表

1 投票
3 回答
7048 浏览
提问于 2025-04-16 09:20

我想在Ubuntu系统中用Python获取一个文件的元数据列表。

如果不使用Python,直接用“extract”这个命令可以很好地工作,但我不知道怎么在Python中使用它,总是收到一个提示,说“extract”没有定义。

3 个回答

0

如果你是在使用Windows系统,你的问题已经在这个网站上被讨论过了。

1

extract 是基于一个叫做 libextractor 的库。你可以通过在 Ubuntu 上安装 python-extractor 这个软件包,来在 Python 中使用这个库。

3

我猜你是在问Windows“属性”对话框中“摘要”标签下显示的元数据。(如果不是,那就忽略这一点吧。)下面是我怎么做到的。

  1. 下载并安装 Python win32扩展 这样会把win32、win32com等放到你的Python[版本]/Lib/site-packages文件夹里。这些扩展提供了win32api、win32com等功能。出于某种原因,我没能让Python 2.6(216版本)的安装成功。后来我把系统更新到了Python 2.7,并使用了适合2.7的216版本,这样就成功了。(下载和安装时,跟着上面的链接,点击“pywin32”,然后点击最新版本的链接(目前是216),再点击与你的系统和Python安装匹配的.exe文件链接(对我来说是pywin32-216.win32-py2.7.exe)。运行这个.exe文件。)
  2. 把代码复制粘贴到你自己电脑上的一个.py文件里,代码来自于Tim Golden的教程中的“获取文档摘要信息”页面。
  3. 调整代码。其实你不一定要调整代码,但如果你把Tim的脚本当作主模块运行,并且没有提供路径作为第一个sys.argv参数,那么就会出错。要调整的话,滚动到代码的底部,去掉最后一块以if __name__ == '__main__':开头的代码。

把你的文件保存为类似property_reader.py的名字,然后调用它的property_sets(filepath)方法。这个方法会返回一个生成器对象。你可以通过这个生成器来查看所有属性及其值。你可以这样实现:

# Assuming 'property_reader.py' is the name of the module/file in which you saved Tim Golden's code...
import property_reader 
propgenerator = property_reader.property_sets('[your file path]')
    for name, properties in propgenerator:
        print name
        for k, v in properties.items ():
            print "  ", k, "=>", v

上面代码的输出结果大概会是这样的:

DocSummaryInformation
   PIDDSI_CATEGORY => qux
SummaryInformation
   PIDSI_TITLE => foo
   PIDSI_COMMENTS => flam
   PIDSI_AUTHOR => baz
   PIDSI_KEYWORDS => flim
   PIDSI_SUBJECT => bar

撰写回答