格式之谜

时间:2013-11-18 12:37:51

标签: python file format

f = open('file.txt')
print f.read()

那是非常直接的不是吗?这是有效的,因为python知道如何读取和写入.txt文件。这些格式如何运作?我希望构建一个python程序来阅读至少主要格式的文档(包括pdf),电子表格和演示文稿。

现在请不要告诉我,“继续使用PDFMiner!”; “使用IronPython阅读.doc!”。

我想了解自己,格式魔术是如何发生的。我想知道格式是如何工作的,这样我就可以构建自己的“任何格式阅读器”。我不想要解决方案来阅读各种格式。我想知道它背后的理论。

非常感谢任何指向此类资源的链接或有关阅读多种格式的帮助。

- 谢谢你

3 个答案:

答案 0 :(得分:7)

不,你完全误解了你的代码在做什么。 Python不“知道”如何读取.txt文件,因为这里没有“格式”。它只是打开一个普通文件并打印出它在那里找到的字节。

像PDF或DOC这样的东西完全不同。字节本身并不意味着什么:它们是相关应用程序理解的文件格式的表示。为了以理解它们包含的内容的方式“读取”它们,您需要构建一个与原始应用程序完全相同的解析器。这就是你所引用的那些库(尽管IronPython是.NET中的Python实现,与读取doc文件无关)。

答案 1 :(得分:3)

读取.txt文件绝对没有魔法 - 它只是ASCII字节,打开和读取文件就是这样:读取字节。这是您可能找到的最简单的文件格式(因为没有格式)。 PDF是简单的纯文本可口可乐对蒸馏水的意义。

然而,PDF使用的格式非常复杂;阅读PDF文件只会让Python将其视为.txt文件。

所以我很遗憾地向您提供您不喜欢听到的旧回复:请继续使用PDFMiner,或阅读其源代码以了解他们如何阅读和解析PDF文件:)(或阅读PDF spec正如devnull指出的那样)

答案 2 :(得分:2)

您需要查找要处理的每种格式的规范,this是ePub的规范,例如,它有点宽泛但你明白了,那么你需要弄清楚如何你想要处理它。