在Ubuntu中使用Python获取文件的元数据列表
我想在Ubuntu系统中用Python获取一个文件的元数据列表。
如果不使用Python,直接用“extract”这个命令可以很好地工作,但我不知道怎么在Python中使用它,总是收到一个提示,说“extract”没有定义。
3 个回答
0
如果你是在使用Windows系统,你的问题已经在这个网站上被讨论过了。
1
extract
是基于一个叫做 libextractor 的库。你可以通过在 Ubuntu 上安装 python-extractor 这个软件包,来在 Python 中使用这个库。
3
我猜你是在问Windows“属性”对话框中“摘要”标签下显示的元数据。(如果不是,那就忽略这一点吧。)下面是我怎么做到的。
- 下载并安装 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文件。)
- 把代码复制粘贴到你自己电脑上的一个.py文件里,代码来自于Tim Golden的教程中的“获取文档摘要信息”页面。
- 调整代码。其实你不一定要调整代码,但如果你把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