不久之前,摆在我面前的任务是分析在一年中特定月份创建的Excel文件的数量。 我将不作详细介绍,我将简单地说:评估一家公司员工的工作。 大约有1000个文件,任务的实质是以直方图的形式为公司负责人,一年中的哪个月份以及制作了多少文件(这些都是寄售单)制定了易于理解的时间表。
我认为为此目的使用文件元数据会很好。 循环运行现有文件,提取文件创建日期,并将所有这些文件作为列表加载到Matplotlib中以创建直方图。
在此之前,我从未使用过元数据,尽管这种需求是定期出现的,但是通过其他方式却被放弃了,所以没有经验。 第二天早上,他做了三明治,喝了一公升咖啡,便着手实现自己的想法。
当然,强烈说“继续”。 首先,很自然地会在Internet上搜索有关元数据的信息,有关在Python中使用它们的信息,类似项目等。 几乎立即我就在GitHub上找到了python的oletools模块,在PyPi中有很好的文档。 我研究了几个小时。 已安装的oletools。 一切正常,元数据已正确提取。 但是 在终端。 我需要一个带循环的脚本。 无论我在Internet上什么地方没有搜索如何与oletools和IDLE进行“结交”,我都在搜索引擎中访问了15(!)页。 信息为零。
毫无疑问,我确信这是一个很棒的模块,可能功能非常强大,但对我来说却没有用。 在下一次尝试(晚上)强制脚本以某种方式提取文件元数据时,引发了另一个异常。 在这里,我注意到oletools加载olefile模块进行工作。 我输入了一个搜索引擎,当我发现这正是我整天都在寻找的时候,我感到惊讶。 非常清晰的文档。 我读了半个小时,然后在阅读过程中立即草绘了脚本。
olefile : pip3 install --user olefile
这是脚本本身,它从Excel文件中提取元数据(我只需要meta.last_saved_time值):
import olefile File_Ole='File.xls' assert olefile.isOleFile(File_Ole) # OLE ole = olefile.OleFileIO(File_Ole) meta = ole.get_metadata() # print(' : '+str(meta.create_time)) # print(' : '+str(meta.last_saved_time))# meta.dump() # ole.close() #
我不会在此处提供脚本的所有代码,本文的任务是讨论使用olefile模块从Excel文件中简单快速地提取元数据。 顺便说一下,该模块从多种文件格式中提取元数据,更多详细信息可以在文档中找到 。
公平地讲,还值得注意的是olefile仅从Excel 1997-2003文件中提取元数据,即 扩展名为.xls。 对于.xlsx文件,我编写了一个带有pyexcel模块的转换器。
好,仅此而已。 谢谢您的关注,希望我的帖子能帮助某人节省时间,神经,最重要的是保持心情愉快。